- UID
- 130990
- 性别
- 男
|
有个以前只用C++的朋友对下面的程序不解. int func1(int) { //... }
int func2(int) { //... }
void main(void) { int a,c; c = func1(a); int b,d;//这里定义变量是非法的,在C++中是允许的. d = func2(b); } 在ANSI"C"中定义变量,必须在一个函数的开始部分. 以上的 int b,d; 的定义是非法的. 但真的就不能在函数的中间定义变量? 能.象下面这样就可以. 用个大括号对定义一个程序块,在这个块中可以定义变量.
void main(void) { int a,c; c = func1(a); { int b,d; // ok,现在这样是合法的. d = func2(b); } } 但是... b,d只是在那个程序块中可见,所以下面的程序有点问题. void main(void) { int a,c; int e; c = func1(a); {//<1> int b,d; d = func2(b); }//<2> e = d; // d只是在那个块中(<1>-<2>之间),所以 这里编译错误, d未定义. } 呵呵,一般情况下都是这样:你获得某些便利的同时,肯定会失去某些效用,不是吗? |
|