if函数的使用方法!!!!!

嵌入式交叉开发环境(1)
在文件main.c中
int func ();&&&& //声明中没参数
int main(){
&&&&&&& int c = func();&&&&&&&&&&& //调用时也不传参,这样才能编译通过
&&&&&&& printf(&%d\n&,c);
&&&&&&& return 0;
在文件func.c中
int func(int a, int b,int c, int d, int e, int f,int g,int h,int i,int j, int k,int l,int m,int n){
&&&&&&& int aa =
&&&&&&& int bb=&&&&&&&&&&&&&&&&
&&&&&&& int cc =c;
&&&&&&& int dd=d;
&&&&&&& int ee =e;
&&&&&&& int ff=f;
&&&&&&& int gg =g;
&&&&&&& int hh =
&&&&&&& int ii =
&&&&&&& int jj =
&&&&&&& int kk =k;
&&&&&&& int ll =l;
&&&&&&& int mm =m;
&&&&&&& int nn =
&&&&&&& a = 0;
&&&&&&& b = 0;
&&&&&&& d=0;
&&&&&&& e = 0;
&&&&&&& f = 0;
&&&&&&& g = 0;
&&&&&&& h = 0;
&&&&&&& i = 0;
&&&&&&& j = 0;
&&&&&&& k = 0;
&&&&&&& l = 0;
&&&&&&& m = 0;
&&&&&&& n = 0;
$&gcc main.c func.c
Segmentation fault
不要怀疑,这个程序可以编译,链接通过。
但是执行时出错,因为func的代码破坏了main的栈帧,导致“段错误”
有人说,C中参数个数有限制,但是毕竟编译通过了,说明语法没错,也就没有参数个数限制了
这只是个极端的例子,但是还是值得注意:当声明与定义的参数不一致时,有可能出错
1)若不定义aa,bb,cc.....这些局部变量,不把实参a,b,c......传给他们的话,程序不会出错
&&&&&& 通过比较汇编代码,发现:
&&&&&&&1)若没定义int aa =.....这些语句,则对实参a,b,c......赋值时,修改的是func()函数的栈帧
&&&&&&& 2)若有int aa =.....这些语句,则对实参a,b,c......赋值时,修改的是main()函数的栈帧&&,这样当然会把main的栈帧破坏掉
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3092次
排名:千里之外C语言(3)
getch()是编程中所用的函数:
这个函数是一个不回显函数,当用户按下某个字符时,函数自动读取,无需按回车,有的C语言命令行程序会用到此函数做游戏,但是这个函数并非标准函数,要注意移植性!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2807次
排名:千里之外
原创:29篇
(7)(9)(15)}

我要回帖

更多关于 excel if函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信