黑马程序员技术交流社区

标题: 字符串输出有\0和没有\0的什么区别是什么 [打印本页]

作者: 黄莉萍    时间: 2014-6-6 11:53
标题: 字符串输出有\0和没有\0的什么区别是什么
本帖最后由 黄莉萍 于 2014-6-6 12:50 编辑

以为对字符串已经了解了,就编译运行了一下,但输出的结果不是自己想要的
#include <stdio.h>
int main()
{
   char name[] = {'l','i','x','i','a','o','l','o','n','g','\0'};
   char name1[] ={'x','i','a','o','p','i','n','g'};
printf("%s\n",name1);
return 0;
}
我想输出name1,结果全部都输出来了,挺不解的。。。
作者: 1014917278    时间: 2014-6-6 12:17
本帖最后由 1014917278 于 2014-6-6 12:18 编辑

%s的原理就是读到\0才停止读取,又因为内存地址是从大到小分配的,输出name1找不到\0它会继续输出直到\0为止,name的地址和name1是连着的,懂了吗,手机码字很累哦
作者: 黄莉萍    时间: 2014-6-6 12:44
1014917278 发表于 2014-6-6 12:17
%s的原理就是读到\0才停止读取,又因为内存地址是从大到小分配的,输出name1找不到\0它会继续输出直到\0为 ...

意思是先分配字符串name的存储空间再分配name1的存储空间以大到小分配,字符以小到大排序,而name1没有\0就一直往下读取,直到遇见\0为止是吗?
作者: 黄莉萍    时间: 2014-6-6 12:49
黄莉萍 发表于 2014-6-6 12:44
意思是先分配字符串name的存储空间再分配name1的存储空间以大到小分配,字符以小到大排序,而name1没有\0 ...

刚找到相关视频了,应该是这样理解的,谢谢哈




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2