问答详情
源自:5-12 练习题

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

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

怎么理解?

提问者:杨阿雪 2015-10-06 21:23

个回答

  • qq_慕用113500
    2019-07-26 13:35:39

    假如你写了代码

    void func(static int a);

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

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

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

    我是这样理解的。

  • 荣顶
    2018-05-13 20:42:53

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

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


  • 荣顶
    2018-05-13 20:38:41

    形参:形式上的参数,用完就扔,是系统运行中的一个临时变量,因此不能定义成static型变量
    
    只有全局变量、局部变量才可以这样定义


  • Sirens
    2017-09-07 01:46:24

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

  • onemoo
    2015-10-06 23:41:12

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

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