变量生存期疑问,该如何解决
变量生存期疑问
#include <stdio.h>
char *day_name(int n);
int main()
{
int i;
printf( "input Day No:\n ");
scanf( "%d ",&i);
if(i <0) exit(1);
printf( "Day No:%2d--> %s\n ",i,day_name(i));
}
char *day_name(int n)
{
char *name[]={ "Illegal day ",
"Monday ",
"Tuesday ",
"Wednesday ",
"Thursday ",
"Friday ",
"Saturday ",
"Sunday "
};
return((n <1||n> 7) ? name[0] : name[n]);
}
指针数组name在指针函数day_name内定义的,那么在main中调用完好不是没了么?
调试怎么会OK???
------解决方案--------------------
name的内容实在静态存储区存放的,day_name函数结束仍然有效,所以可以得到内容。
------解决方案--------------------
name所拥有的内容存储在程序一运行就创建的静态区内(知道程序结束之前都是存在的)
所以其作用域是global
------解决方案--------------------
字符串是常量哦
存在静态区
所以...
#include <stdio.h>
char *day_name(int n);
int main()
{
int i;
printf( "input Day No:\n ");
scanf( "%d ",&i);
if(i <0) exit(1);
printf( "Day No:%2d--> %s\n ",i,day_name(i));
}
char *day_name(int n)
{
char *name[]={ "Illegal day ",
"Monday ",
"Tuesday ",
"Wednesday ",
"Thursday ",
"Friday ",
"Saturday ",
"Sunday "
};
return((n <1||n> 7) ? name[0] : name[n]);
}
指针数组name在指针函数day_name内定义的,那么在main中调用完好不是没了么?
调试怎么会OK???
------解决方案--------------------
name的内容实在静态存储区存放的,day_name函数结束仍然有效,所以可以得到内容。
------解决方案--------------------
name所拥有的内容存储在程序一运行就创建的静态区内(知道程序结束之前都是存在的)
所以其作用域是global
------解决方案--------------------
字符串是常量哦
存在静态区
所以...