为了账号安全,请及时绑定邮箱和手机立即绑定

C程序函数的形式参数不可以说明为static型变量

C程序函数的形式参数不可以说明为static型变量

怎么理解?

正在回答

5 回答

假如你写了代码

void func(static int a);

函数调用总不能是一次吧,有可能很多次。

代码“static int a”在翻译单元(翻译单元:源代码以及包含的所有头文件)中只会被执行一次,

当函数第二次调用的时候,代码“static int a”不会被执行,也就不会声明一个形式参数,所以就不能将main函数中的变量的值传递给被调函数。当形参代码中没有static时,每次调用函数的时候,就可以重新声明一个局部变量。

我是这样理解的。

0 回复 有任何疑惑可以回复我~

如果你听不懂的话呢,换句话说

因为C语言规定 不可以用static 做形参
为什么这么规定,是因为没必要
静态局部变量的特点,是生存周期不被函数限制
每次调用函数时,静态变量还是上次退出的值。 除此外 和普通局部变量没区别
而参数, 每次调用的时候, 形参的值其实就是实参决定的
换句话说,每次调用函数, 形参都会被重新初始化或者说赋值
这样的话, 用static就没什么意义了,以为完全没机会保留上次的值,必然会被重写的。 
既然没意义,C就规定了,形参不许static


3 回复 有任何疑惑可以回复我~
形参:形式上的参数,用完就扔,是系统运行中的一个临时变量,因此不能定义成static型变量

只有全局变量、局部变量才可以这样定义


0 回复 有任何疑惑可以回复我~

形式参数调用动态存储方式,不是静态变量所以不能用static声明

1 回复 有任何疑惑可以回复我~

比如,不能把下面的func函数的参数a声明为static变量

void func(static int a);  // 这是错的!


0 回复 有任何疑惑可以回复我~
#1

杨阿雪 提问者

哦,只能是int a 呗?
2015-10-08 回复 有任何疑惑可以回复我~
#2

onemoo 回复 杨阿雪 提问者

是,这个代码中只需 int a 即可。 static不能用于修饰函数参数。
2015-10-10 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

C程序函数的形式参数不可以说明为static型变量

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信