C语言静态变量初始化的新手问题
答案:4 悬赏:0 手机版
解决时间 2021-02-09 03:50
- 提问者网友:世勋超人
- 2021-02-08 15:15
C语言静态变量初始化的新手问题
最佳答案
- 五星知识达人网友:玩世
- 2021-02-08 16:27
静态变量在编译的时候初始化,所以初值必须是常量(可以是常数、定义成常数的宏、C++编译器中用const修饰的常量),静态变量不能用变量赋初始值,但在运行时是可以用变量赋值的。追问那有没有什么办法。。我知道他只会初始化一次,我就是说这一次初始化又没什么办法用个变量。
void printmon(int n)
{ extern int l;
static int k=l;
就这一点追答首先要问你为什么要用一个全局变量去初始化局部静态变量,全局变量破坏了程序的模块化,其次你直接使用那个全局变量行不行,再者既然已经使用了全局变量I那再多使一个全局变量k也无妨,最后也可以使用一定的技巧解决你的问题。
void printmon(int n)
{
//这里保持原来的代码.
static int k=0;
static int flag=0;
if(flag==0)
{
k=I;
flag=1;
}
//这里保持原来的代码.
}
void printmon(int n)
{ extern int l;
static int k=l;
就这一点追答首先要问你为什么要用一个全局变量去初始化局部静态变量,全局变量破坏了程序的模块化,其次你直接使用那个全局变量行不行,再者既然已经使用了全局变量I那再多使一个全局变量k也无妨,最后也可以使用一定的技巧解决你的问题。
void printmon(int n)
{
//这里保持原来的代码.
static int k=0;
static int flag=0;
if(flag==0)
{
k=I;
flag=1;
}
//这里保持原来的代码.
}
全部回答
- 1楼网友:荒野風
- 2021-02-08 18:24
静态变量赋了一次值后,再次调用所在函数不再次赋值,沿用上次的值
- 2楼网友:北城痞子
- 2021-02-08 17:45
变量I除非也是静态的,如果I可变你把它赋值给静态变量,那么静态岂不是没用了
- 3楼网友:荒野風
- 2021-02-08 17:18
很简单:我把静态变量初始化那点的l换成个1就不出错,从这一句中看出你把初始化的值看错了,也就是初始化的应该是一个1(数字一),而不是字母l(字母le) 明白了把。
你提供的初始值提供错了,
你的题中好像是用前面定义的一个变量来给他提供初值的。但是这不行的。
你提供的初始值提供错了,
你的题中好像是用前面定义的一个变量来给他提供初值的。但是这不行的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯