课程
/后端开发
/C
/C语言入门
C程序函数的形式参数不可以说明为static型变量
怎么理解?
2015-10-06
源自:C语言入门 5-12
正在回答
假如你写了代码
void func(static int a);
函数调用总不能是一次吧,有可能很多次。
代码“static int a”在翻译单元(翻译单元:源代码以及包含的所有头文件)中只会被执行一次,
当函数第二次调用的时候,代码“static int a”不会被执行,也就不会声明一个形式参数,所以就不能将main函数中的变量的值传递给被调函数。当形参代码中没有static时,每次调用函数的时候,就可以重新声明一个局部变量。
我是这样理解的。
如果你听不懂的话呢,换句话说
因为C语言规定 不可以用static 做形参 为什么这么规定,是因为没必要 静态局部变量的特点,是生存周期不被函数限制 每次调用函数时,静态变量还是上次退出的值。 除此外 和普通局部变量没区别 而参数, 每次调用的时候, 形参的值其实就是实参决定的 换句话说,每次调用函数, 形参都会被重新初始化或者说赋值 这样的话, 用static就没什么意义了,以为完全没机会保留上次的值,必然会被重写的。 既然没意义,C就规定了,形参不许static
形参:形式上的参数,用完就扔,是系统运行中的一个临时变量,因此不能定义成static型变量 只有全局变量、局部变量才可以这样定义
形式参数调用动态存储方式,不是静态变量所以不能用static声明
比如,不能把下面的func函数的参数a声明为static变量
void func(static int a); // 这是错的!
杨阿雪 提问者
onemoo 回复 杨阿雪 提问者
举报
C语言入门视频教程,带你进入编程世界的必修课-C语言
1 回答static修饰形式参数
1 回答getPeachNumber函数里面的形参没有定义变量类型
1 回答可不可以说定义函数括号中的都是形参?
2 回答函数参数为什么可以不定义类型?
1 回答自定义函数里面的变量与形参