在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 a[60],因为数组是从a[0]开始计算的 如果你没有赋值
那么默认的是全是0 也就是全是空格 以内你定义的是字符型。
‘\0’是系统给你加的 它的位置是a[60]的60个元素的后面 不占用你定义的60个元素
你定义的是字符数组 不是int 行数组 char定义的是放字符 字符串的
这个问题是你把数组与字符串搞混了;
比方说char[60]="i a m",你用字符串赋值的话,你的字母个数必需小于60,否则就会出错,如果小于60的话,系统会自动加"\0",而数组却不同,你可以正好等于60,也就是说最后一个数字不一定等于"\0".如果小于60,则后面当然是0了
简单一点说:你用字符串赋值的话后面系统就会自动加"\0",数组赋值后面是不自加"\0"的.
总体来说,数组未初始化之前都是不可知的,如果强行输出时会是乱码。对于字符型数组,只要定义个数小于等于定义的个数,它都会自动加/0。对于整型数组,不会加/0。
在c/c++中,数组是指 连续分布的内存单元。字符串是一种字符数组,比其他数组特殊的地方是如果数组被赋值(scanf,fread,fprintf,strcpy,nstrcpy)会在数组末尾追加'\0'.
在c语言中,数组大小是不可知的。(strlen(s)只能算出从s开始到'\0'的长度)