C语言简单问题
#include <stdio.h>
void main()
{
static int x,n[9];
printf("input No.:");
scanf("%d",&x);
while(x)
{
n[x]+=1;
printf("input No.:");
scanf("%d",&x);
}
for(x=1;x<=8;x++)
{
printf("\tNo.%d=%d",x,n[x]);
if(x%2==0)
printf("\n");
}
}
static 是什么意思 我不加就有错误 加了就没有了 可以解释清楚点麽
问题点数:10、回复次数:8Top
1 楼syjeffdyg(阿谷)回复于 2005-01-07 13:07:23 得分 0
static是静态存储的意思,只有静态存储还外部存储的数组可以初始化,不赋初值默认为0。Top
2 楼xiaofei1984(逍飞)回复于 2005-01-07 13:12:08 得分 0
static是静态的意思,就是说用它定义的变量只能初始化一次。上面程序你加不加都没有编译错误,
不知楼主这段程序是什么意思??Top
3 楼sd6703684()回复于 2005-01-07 13:14:56 得分 0
就是比如投票 1-8号 0为投票over 上面程序不加有编译错误的 我试过
Top
4 楼sd6703684()回复于 2005-01-07 13:16:19 得分 0
是里面如果打错了就会非法 加了static打错没事 就是无效Top
5 楼dlyy(魑魅魍魉)回复于 2005-01-07 13:18:26 得分 0
borland去掉了编译没有错误,不过结果与有static的不一样~Top
6 楼sd6703684()回复于 2005-01-07 13:22:23 得分 0
我用VC++6。0 也是没有错误 就是结果不一样 为什么Top
7 楼dongpy(51-->ARM)回复于 2005-01-07 15:03:27 得分 0
是因为你没有对数组n[9]初始化为0,而static 会默认初始化为0。 所以结果不对Top
8 楼aladar(深蓝)回复于 2005-01-07 15:10:35 得分 10
>是里面如果打错了就会非法 加了static打错没事 就是无效
那是因为没加static时x值不定,如果输入一个乱七八糟的东西,scanf是不会更改x的值而直接返回一个错误,这样你n[x]就会出现访问违规
如果加了static,x初始就是0,这样输入错误就和输入0是一样的了
其实比较好的写法是
int x=0, n[9]={0};
Top




