首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言数组,static疑问解决思路

2012-04-09 
c语言数组,static疑问我在定义数组,输出数组时,试过几种不同情况:1:main(){int a[10]int ifor(i0i10

c语言数组,static疑问
我在定义数组,输出数组时,试过几种不同情况:

1:
main() 
{int a[10];
int i;
for(i=0;i<10;i++)
printf("%d,",a[i]);
}
只定义,不赋初值,输出为-858993460,-858993460。。。。。(10个)

main() 
{int a[10]={1};
int i;
for(i=0;i<10;i++)
printf("%d,",a[i]);
}
赋初值,输出1,0,0,。。。。。

main() 
{int a[10];
a[0]=1;
int i;
for(i=0;i<10;i++)
printf("%d,",a[i]);
}
a[0]=1在前,int i在后,错误

main() 
{int a[10];
int i;
a[0]=1;
for(i=0;i<10;i++)
printf("%d,",a[i]);
}
int i在前,a[0]=1在后,输出1,-858993460,。。。。

main() 
{static int a[10];
int i;
a[0]=1;
for(i=0;i<10;i++)
printf("%d,",a[i]);
}
数组定义加static,并且int i在前,a[0]在后,输出。1,0,0.。。。。。

问题,如果要输出正常,必须数组定义时,初始化赋值。如果只是初始化,不赋值,就必须数组定义是static。请问这是为什么?另外,在本例子中,一定要int i在前,a[0]=1,在后,不然就报错,问什么呢?

[解决办法]
C语言中,先声明变量,初始化在后面。
int a[10];
a[0]=1;
int i;
这个应该int i在a[0]=1的前面。
数组使用的时候先初始化,防止读取出现错误的值。你可以memset来把数组全部置0.
[解决办法]
(1)先来介绍它的第一条也是最重要的一条:隐藏.
(2)static的第二个作用是保持变量内容的持久.
(3)static的第三个作用是默认初始化为0.
好好的领会它的内在含义。

热点排行