C语言形参实参问题

[复制链接]
查看11 | 回复4 | 2009-6-5 23:24:04 | 显示全部楼层 |阅读模式
说实话,这个程序垃圾代码很多,其实也就是这些垃圾代码迷惑人。从main()函数的for 循环可以看出下面的 k=f(a++);被执行了两次(两次循环).一轮一轮的来解答一下。第一轮:
循环前a=2,然后进入循环执行k=f(a++),这时先计算a++,此时a=3(注意区别++a),然后把a=3作为f()函数的实参传递,也就是此时f()函数的形参a=3,这里static c=3;是声明一个静态变量,这个变量常驻内存,直到主程序结束,也就是说这个f()函数调用结束后静态变量C的值还存在,下一次再调用f()函数,C的赋值语句就不起作用了,即static c=3;无效(静态变量只能赋值一次),好了,对于这个f()函数可以简化为:...
回复

使用道具 举报

千问 | 2009-6-5 23:24:04 | 显示全部楼层
static为静态储存变量声明,也就是说自定义函数调用结束时它的值也不会消失。i=0:a=3,c=4,k=3i=1: a=4,c=5,k=4所以printf里k=4....
回复

使用道具 举报

千问 | 2009-6-5 23:24:04 | 显示全部楼层
static为静态存储变量,每次调用那个函数时a的值都被重新赋值,而且是c++。在main中a的声明即赋值是没有用的...
回复

使用道具 举报

千问 | 2009-6-5 23:24:04 | 显示全部楼层
这有啥看不懂的你把for(i=0;i<2;i++)这句去了再看这句没起作用...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行