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

c语言定义数组小疑点

2012-04-13 
c语言定义数组小问题c语言数组定义时是不是要比实际多一位如我想存3个字符就:char array[4]是这样对吧最

c语言定义数组小问题
c语言数组定义时是不是要比实际多一位

如我想存3个字符就:

char array[4];

是这样对吧最后要留一位‘\0’

那整形数组还用不用留这一位(浮点型呢?)

看到有的书上留,但有的书没留,把我搞迷糊了

[解决办法]
存字符在末尾不自动加'\0',存字符串时系统才在字符串末尾自动加'\0',整形数组和浮点型不用留这一位
[解决办法]
“如我想存3个字符就:

char array[4];

是这样对吧最后要留一位‘\0’”
是对于字符串数组来说的
例如
char array[4]=“abc";
其中
array[0]=‘a'
array[1]=‘b'
array[2]=‘c'
array[3]=‘\0'


[解决办法]
字符串的末尾有加一个‘\0’作为结束标志,如字符串常量"abc",它占用4个字符的存储空间
字符数如果用字符串常量初始化,就要考虑其长度至少要为字符串常量有效字符的长度加1(即‘\0’),而如果用字符常量初始化就不必。举个例子:
char str1[]="abc";
char str2[]={'a','b','c'};
字符数组str1的长度为4,其元素分别为str1[0]=‘a’,str1[1]=‘b’,str1[2]=‘c’,str1[3]=‘\0’
字符数组str2的长度为3,其元素分别为str2[0]=‘a’,str2[1]=‘b’,str2[2]=‘c’

使用的时候两种方式都可以,只是要注意用字符串常量初始化时需得留意结束标志,防止数组越界
[解决办法]
+1

探讨
字符串的末尾有加一个‘\0’作为结束标志,如字符串常量"abc",它占用4个字符的存储空间
字符数如果用字符串常量初始化,就要考虑其长度至少要为字符串常量有效字符的长度加1(即‘\0’),而如果用字符常量初始化就不必。举个例子:
char str1[]="abc";
char str2[]={'a','b','c'};
字符数组str1的长度为4,其元素分别为str1[0]=‘a’,str……

热点排行