c语言中定义一个字符数组,其中存放的是什么
c语言中定义一个字符数组,比如定义个chara[60],还没初始化,那么是a[0]中存放的'\0'还是a[59]中存放的是'\0',还是全部存放的都是'\0'?如果初始化...
c语言中定义一个字符数组,比如定义个char a[60],还没初始化,那么是a[0]中存放的'\0'还是a[59]中存放的是'\0',还是全部存放的都是'\0'?
如果初始化char a[60]="1234567890",那在最后一个字符'0'后会自动加'\0'吗?
再补充一下,如果是int a[60]=1234567890,整型数组也是以'\0'为结束符吗?也会在定义的最后一个元素后自动加'\0'吗?如何求出整型数组的长度?不好意思,我比较菜。 展开
如果初始化char a[60]="1234567890",那在最后一个字符'0'后会自动加'\0'吗?
再补充一下,如果是int a[60]=1234567890,整型数组也是以'\0'为结束符吗?也会在定义的最后一个元素后自动加'\0'吗?如何求出整型数组的长度?不好意思,我比较菜。 展开
9个回答
展开全部
在C语言中,字符数组中存放的内容中字符的ASC码。如果在定义过程中没有赋初值,则数组中的元素都为0。如
char c[10];
定义了c是一个字符数组共有10个元素c[0]、c[1]……c[9],因为没有赋初值,所以这10个元素的值都是0。
如果定义时赋了初值,或在程序中赋元素的值,则该元素保存对应字符的ASC码值。如:
char c[10]="ABCD";
则元素
a[0]=65 //'A'的ASC码是65
a[1]=66 //'B'的ASC码是66
a[2]=67 //'C'的ASC码是67
a[3]=68 //'D'的ASC码是68
在程序中,a[0]='A'和a[0]=65是等价的。
验证:
char a[10]="ABCD";
printf("%d %c\n",a[0],a[0]); //输出65 A
printf("%d %c\n",a[3],a[3]); //输出68 D
a[3]=65;
printf("%d %c\n",a[3],a[3]); //输出65 A
printf("%d",a[6]); // 输出0 因为没有赋a[6]初值,所以其值为0
char c[10];
定义了c是一个字符数组共有10个元素c[0]、c[1]……c[9],因为没有赋初值,所以这10个元素的值都是0。
如果定义时赋了初值,或在程序中赋元素的值,则该元素保存对应字符的ASC码值。如:
char c[10]="ABCD";
则元素
a[0]=65 //'A'的ASC码是65
a[1]=66 //'B'的ASC码是66
a[2]=67 //'C'的ASC码是67
a[3]=68 //'D'的ASC码是68
在程序中,a[0]='A'和a[0]=65是等价的。
验证:
char a[10]="ABCD";
printf("%d %c\n",a[0],a[0]); //输出65 A
printf("%d %c\n",a[3],a[3]); //输出68 D
a[3]=65;
printf("%d %c\n",a[3],a[3]); //输出65 A
printf("%d",a[6]); // 输出0 因为没有赋a[6]初值,所以其值为0
展开全部
你定义的char a[60],因为数组是从a[0]开始计算的 如果你没有赋值
那么默认的是全是0 也就是全是空格 以内你定义的是字符型。
‘\0’是系统给你加的 它的位置是a[60]的60个元素的后面 不占用你定义的60个元素
你定义的是字符数组 不是int 行数组 char定义的是放字符 字符串的
那么默认的是全是0 也就是全是空格 以内你定义的是字符型。
‘\0’是系统给你加的 它的位置是a[60]的60个元素的后面 不占用你定义的60个元素
你定义的是字符数组 不是int 行数组 char定义的是放字符 字符串的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个问题是你把数组与字符串搞混了;
比方说char[60]="i a m",你用字符串赋值的话,你的字母个数必需小于60,否则就会出错,如果小于60的话,系统会自动加"\0",而数组却不同,你可以正好等于60,也就是说最后一个数字不一定等于"\0".如果小于60,则后面当然是0了
简单一点说:你用字符串赋值的话后面系统就会自动加"\0",数组赋值后面是不自加"\0"的.
比方说char[60]="i a m",你用字符串赋值的话,你的字母个数必需小于60,否则就会出错,如果小于60的话,系统会自动加"\0",而数组却不同,你可以正好等于60,也就是说最后一个数字不一定等于"\0".如果小于60,则后面当然是0了
简单一点说:你用字符串赋值的话后面系统就会自动加"\0",数组赋值后面是不自加"\0"的.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
总体来说,数组未初始化之前都是不可知的,如果强行输出时会是乱码。对于字符型数组,只要定义个数小于等于定义的个数,它都会自动加/0。对于整型数组,不会加/0。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2009-05-20
展开全部
在c/c++中,数组是指 连续分布的内存单元。字符串是一种字符数组,比其他数组特殊的地方是如果数组被赋值(scanf,fread,fprintf,strcpy,nstrcpy)会在数组末尾追加'\0'.
在c语言中,数组大小是不可知的。(strlen(s)只能算出从s开始到'\0'的长度)
在c语言中,数组大小是不可知的。(strlen(s)只能算出从s开始到'\0'的长度)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询