C语言中函数名后面()中定义的参数和函数体内定义的变量有什么区别?

int max(int x,int y)
{
int z;
if (x>y) z=x;
else z=y;
return(z);
}
以上是一个C语言简单程序的一部分,在函数max后面的括号中写出了函数的参数x,y。那为什么x,y要在括号内给出,而变量z却实在{}内的函数体中定义呢?哪些变量需要在函数参数中定义,哪些变量只需在函数体中定义就可以了?或者说函数的参数和函数体内的一般变量有什么区别?求大神解答。

从内存角度来讲,函数参数是一定保存到栈区的,函数体内定义的变量可以保存到栈区,比如局部变量,也可以保存到静态数据区,比如static变量。示例如下:

#include <stdio.h>
#include <locale.h>
void f(int a, int b) {
printf("%d\t%d\n", a, b);
}
int main()
{
int x = 1; //局部变量 ä¿å­˜åˆ°æ ˆåŒº
static int y = 2; //static变量,保存到静态数据区
f (x, y); //x和y必须保存在栈区
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-05
函数后面括号里是函数形参,是调用该函数需要的输入参数,而在函数里面定义变量z,是局部变量,它只在函数内有效。

这些局部变量、形参、全局变量等都是C基础,找本C语言书认真看看。本回答被提问者采纳
第2个回答  2013-09-05
因为你要比较2个数,就要传递那2个数进函数比较啊。
所以要有参数x,y;
函数内定义的是局部变量。方便操作而已。
第3个回答  2013-09-05
==书上写的好好的啊。。。
()里是形参,没什么影响的,可以随便定义。计算机在引用的时候会自己带到max里使用。。

{}里的就需要了。z是返回值,需要定义。
第4个回答  2013-09-05
局部变量。
相似回答