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'吗?如何求出整型数组的长度?不好意思,我比较菜。
展开
 我来答
mr_shj
推荐于2017-09-11 · TA获得超过2679个赞
知道大有可为答主
回答量:1665
采纳率:94%
帮助的人:1298万
展开全部
在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
jess5231
推荐于2017-10-11
知道答主
回答量:25
采纳率:0%
帮助的人:30.8万
展开全部
你定义的char a[60],因为数组是从a[0]开始计算的 如果你没有赋值
那么默认的是全是0 也就是全是空格 以内你定义的是字符型。
‘\0’是系统给你加的 它的位置是a[60]的60个元素的后面 不占用你定义的60个元素
你定义的是字符数组 不是int 行数组 char定义的是放字符 字符串的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
XIENIANGBING
2009-05-21 · TA获得超过177个赞
知道答主
回答量:99
采纳率:0%
帮助的人:70.9万
展开全部
这个问题是你把数组与字符串搞混了;
比方说char[60]="i a m",你用字符串赋值的话,你的字母个数必需小于60,否则就会出错,如果小于60的话,系统会自动加"\0",而数组却不同,你可以正好等于60,也就是说最后一个数字不一定等于"\0".如果小于60,则后面当然是0了
简单一点说:你用字符串赋值的话后面系统就会自动加"\0",数组赋值后面是不自加"\0"的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
muxuanyi
2009-05-20 · 超过12用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:34.2万
展开全部
总体来说,数组未初始化之前都是不可知的,如果强行输出时会是乱码。对于字符型数组,只要定义个数小于等于定义的个数,它都会自动加/0。对于整型数组,不会加/0。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-05-20
展开全部
在c/c++中,数组是指 连续分布的内存单元。字符串是一种字符数组,比其他数组特殊的地方是如果数组被赋值(scanf,fread,fprintf,strcpy,nstrcpy)会在数组末尾追加'\0'.
在c语言中,数组大小是不可知的。(strlen(s)只能算出从s开始到'\0'的长度)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式