2012-10-27 82 views
2

我试图使主要功能简短。我需要回答一些问题(在每个问题中有很多代码行,我需要使用主要声明的变量) 但是,使用函数,我知道如何使用的方式不会有用,因为我需要在每个问题中使用很多变量,不同类型,而不是数组。 对不起,我很难解释我需要什么。功能范围为C

这是我的代码与伪混合(简化的)

int 
main(void) 
{ 
    int x = 4; 
    int y = 5; 
    float z = 6.8; // And lot of more variables like this 

    answer_1; //pseudocode 
    answer_2: 

    return 0; 
} 

//内部ANSWER1有很多的printf的的表示变量x,Y,Z ....等)

的值//在answer1中有很多printf显示变量t,i,l ....的值)

+1

“我需要一个函数内部使用Main中声明的变量。” - 等等,这不正是什么函数参数? – 2012-10-27 15:48:20

+0

什么是*缩短主*? – pmod

+1

把''static int x = 4;'带到main的主体之外。至少这样,它们的可见性仅限于当前的编译单元(文件),而不是在整个项目中可见的全局变量。然而,即使使用静态变量,一个比'x'更具说服力的变量名也可能是一个好主意。 – fvu

回答

1

随着您发布的代码示例,传入x的最佳方式是作为功能。

void func(int x); 

int main(void) 
{ 
    int x = 4; 
    func(x); 
    return 0; 
} 

void func(int x) 
{ 
    printf("X = %d", x); 
} 

如果这不会在你的真实代码中工作,你可以发布一个更长的例子吗?

+0

好吧,但如果有20个变量可以通过,不同的类型,而不是数组。我想要做的是调用一个函数(在我的例子中)为需求列表中的每个答案。只是为了让我的代码更易于读懂我的老师。 – jotape

+2

如果你有很多状态想要传递给不同的函数,我建议将这些值逻辑地分组到[结构](http://en.wikipedia.org/wiki/Struct_(C_programming_language)) ,或指向结构的指针。变量之间是否存在逻辑组?例如,fooA,fooB,fooC,都可以存储在一个结构foo中,成员a,b,c。 – Douglas

+1

另外,如果你有20个参数,那么你可能需要把事情分解成多个函数。如上所述,封装综合状态的结构方法也是可取的。 – Joe

0

如果你不想这些变量传递给函数,你可以

+2

致OP:不要这样做。没有人以这种方式写C,理由很充分。按照预期的方式使用参数。 – Joe

+1

值得指出的是,全局变量(包括静态和导出)通常是一种不好的做法,如果它们被用来代替函数参数,那么它是非常可怕的。这就像在OOP语言中使用单例传递方法参数一样... – hyde

+0

@Joe我正在学习;也许在我的例子中使用函数不是我所需要的。我会改变这个问题,这样它就可以理解我的意图 – jotape

0

尝试使用“功能的其他函数中”

功能主要包含两个其他功能。 先定义变量然后写入函数体。