c语言字符串和字符数组的问题

嗜学如命的小蚂蚁 发布于 2016/01/15 09:46
阅读 233
收藏 0

有个小疑问,是酱紫的……

C语言中字符串是是字符数组的方式表示

char str[5]={'a','s','d','f','e'};    这一句话,后面没有 \0,它是不是一个字符串呢??

还是说,必须要 \0 结尾的,才能叫做字符串?

字符数组 和 字符串 应该怎么样来区分?

请指点一下,谢谢了

加载中
0
四彩

字符串就是字符数组。

反过来说字符数组就是字符串,只不过是以'\0'为最后那个元素。

char str[6]={'a','s','d','f','e','\0'};  

就等于

char str[6]="asdfe";  

那么

char str[5]={'a','s','d','f','e'};  

是一个字符数组,也是字符串,只不过是一个越界了的字符串。

0
CuiBQ
CuiBQ
你写的那个是字符数组,写成字符串应该是char str[6]=''hello'';这种形式,之所以是6,因为编译器会知道这是字符串类型,然后自动在后面加上\0,如果用字符数组对他初始化,那么应该是 char str[5]={'a','s','d','f','e','\0'}
0
木兰宿莽
木兰宿莽
你那个是字符数组,不是字符串。char str[]="asdfe";或char* str="asdfe"; 这样的叫做字符串。怎样说呢,其实你只要保证不越界,随便你用哪个!!
0
Dolion-Hou
Dolion-Hou

你写的也是字符串,只不过你的这个已经数组越界.[]中的数字至少是6才可以.它的实质是用字符串给数组赋值.

有什么不懂的再问我.下面给你一点三种赋值的例子.

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]; strcpy(a, "hello");
易错情况:
1、char a[10]; a[10]="hello";//一个字符怎么能容纳一个字符串?况且a[10]也是不存在的!
2、char a[10]; a="hello";//这种情况容易出现,a虽然是指针,但是它已经指向在堆栈中分配的10个字符空间,现在这个情况a又指向数据区中的hello常量,这里的指针a出现混乱,不允许!
还有:不能使用关系运算符“==”来比较两个字符串,只能用strcmp() 函数来处理。
0
k
kchr

字符串,本质上就是一种末尾是 0,也可写作 '\0', 同时其它位置不为 0 的,特殊的字符数组。

字符串相关函数,就是利用到末尾是 0 (同时其它位置不为 0)这 2 个条件的一些函数。

0
萧雅祺
萧雅祺
我不会说我在用手机客户端看评论的时候有大堆QQ表情
返回顶部
顶部