char a[10];
怎么给这个数组赋值?
1、定义时直接用字符串赋值
char a[10]='hello ';
注:不能在分配值之前进行定义,例如char a[10]。 a[10]='hello '; 这是错误的!
2、给数组中的字符一个个赋值
char a[10]={'h '、' e '、' l '、' l '、' o'};
3、使用strcpy
char a[10]; srcpy(a,' hello );
容易出错的情况:
1、char a[10]; a[10]='hello '; //1个字符能容纳字符串吗? 而且a[10]也不存在!
2、char a[10]; a='hello '; //这很容易发生。 a是指针,但指向分配给堆栈的10个字符区域。 现在,这个情况a指的是数据区域中的晕圈常数。 这里的指针a很混乱。 不允许!
然后,不能使用关系运算符“==”比较两个字符串。 只能用strcmp ()函数处理。
c语言运算符无法操作字符串。 因为在c语言中将字符串作为数组来处理,所以字符串的限制方法和数组相同,特别是不能用c语言的运算符进行复制和比较操作。
尝试直接复制或比较字符串将失败。 例如,假设str1和str2有以下声明:
char str1[10],str2[10];
=不能使用运算符将字符串复制到字符数组中:
str1='abc '; /*** WRONG ***/
str2=str1; /*** WRONG ***/
c语言将这些语句解释为一个指针和另一个指针之间的(非法的)赋值运算。 但是,使用=初始化字符数组是合法的。
char str1[10]='abc ';
这是因为在声明中,=不是赋值运算符。
尝试使用关系运算符、判定运算符等比较字符串是合法的,但无法获得预期的结果。
if(str1==str2) ./*** WRONG ***/语句将str1和str2作为指针进行比较,而不是比较两个数组的内容。 因为str1和str2有不同的地址,所以表达式str1==str2的值必须为0。
3358 www.Sina.com/: http://blog.csdn.net/cherish _ xmm/article/details/43267603