给字符数组赋初值时赋字符串:
对于一个数组char b[6]={'a','b','c','d'};
sizeof(b)=6
strlen(b)=4
可见,sizeof是对数组的空间测量大小,所定义的a为多少,sizeof即为多少。
而strlen可以测量字符数组的字符串个数,但定义的元素个数一定得多于所赋值的字符串个数。
如a[4]={'a','b','c','d'}
这里的sizeof仍然为4,但strlen为随机值。
a[ ]={'a','b','c','d'}
此时,因为字符串后面没有\0的位置,所以strlen(a)便是一个随机值,虽然a中存放了字符串,但并不能把它当做字符串使用。
在赋初值时直接赋字符串常量:
a[10]="string!"
这里的string!是字符串常量,系统已自动加上\0,即使是a[ ]="string!",这里仍然可行,因为末尾有\0。但若是a[7]="string!",则字符串的字符个数超出所开辟的存储单元。
通过指针给字符串赋值:
char x[10],*p="abskk";int i,j;
scanf("%s",x);
for(i=0;i<10;i++)
x[i]=*p++;//++的优先级大于*
输出的值是指针的值,则说明可以把指针的字符串赋给该数组。