问答详情
源自:5-10 局部与全局

对例子代码的一个疑惑

int fn1(int x)

{

    int y,z;

    z=2;y=x+z;

    ……

这里fn1括号里的能把int y,int z加上去吗?加上去了下面y和z是不是就不用再定义了

提问者:奇怪的阿怪 2017-07-28 17:52

个回答

  • X4tar
    2017-07-29 10:45:47
    已采纳

    括号里的形参是一个函数的入口, c语言里所有的形参都要对应的实参传入.如定义int fn1(int x, int y,int z){......}

    但是在调用的时候: fn1(2);  这样写是不对的.这样只有x得到赋值, 编译器就会报错.如果:fn1(1,2,3);这样写就一点问题都没有, 这样子就无需在函数体内再定义y,z. 因为形参表定义的变量也是属于这个函数的局部变量.如果再在函数体中定义: int y,z; 编译器就会报错: redefine....(重复定义)

  • X4tar
    2017-07-29 10:48:41

    有兴趣可以看下形参缺省, 在C++里形参是可以缺省的,即:声明函数 int fn1(int x, int y=2, int z=3);

    调用时; fn1(1); 赋值结果: x =1 ,y =2, z =3;