Code Bye

c语言中 关于字符数组和字符串的区别

问一下字符串到底是怎么定义的?
题号:12949
字符数组 char a[10]={“x”,”a”,”a”,”b”}是一个长度为4的字符串。
答案:正确
题号:12951
字符数组 char a[5]={“a”,”b”}不是一个字符串。
答案:错误
题号:12950
字符数组 char a[]={“x”,”\0″,”a”,”\0″}是一个长度为3的字符串。
答案:错误
上面三个本人觉得都不是字符串啊,字符串不是字符的带“ ”的集合和需要结束符吗?
本人这句话对吗
char a[5]={“ab\0”}不是这样才算字符串吗?
等价于char a[5]={“a”,”b”,”\0″,”\0″,”\0″}
解决方案

16

C没有字符串这种类型,只要字符数组最后是以\0结尾的,就算是C的字符串
char a[10]={“x”,”a”,”a”,”b”}  后面的字符将全会用0填充,所以是以\0结尾的
同理char a[5]={“a”,”b”}也是

8

电脑内存或文件内容或传输内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容或传输内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。

8

字符串:
char a=”abc”;等价于char a[]={“a”,”b”,”c”,”\0″};当然后者也是字符数组,字符串的读取遇到零会自动停止读取,“abc”是常量字符串,里面的内容不能更改,而后者可以。多看看书,全部的学习,基础很重要!自勉!

16

8

c里边的所谓的字符串就是一连串的字符,也可以理解为数组里边保存的一连串的字符(char)类型的数据,当然作为合法的字符串是需要有结束符”\0″的。也可以有这样的形式,定义一个字符指针,例如const char*p=”hello”这样的形式表示字符指针p指向这个常量字符串“hello”的首字符的位置,而这个常量字符串是隐含结束符”\0″的。当你定义一个char数组准备保存字符串的时候,需要为结束符预留一个空间,例如char a[10],这个数组最多只能保存9个有效字符,假如你写入超过9个有效字符,要么程序会出错(越界访问),要么就是无法正确显示这个字符串(原因是在合法界限内,没有结束符)

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c语言中 关于字符数组和字符串的区别