A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 黄莉萍 于 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,结果全部都输出来了,挺不解的。。。

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

3 个回复

倒序浏览
1014917278 来自手机 中级黑马 2014-6-6 12:17:06
沙发
本帖最后由 1014917278 于 2014-6-6 12:18 编辑

%s的原理就是读到\0才停止读取,又因为内存地址是从大到小分配的,输出name1找不到\0它会继续输出直到\0为止,name的地址和name1是连着的,懂了吗,手机码字很累哦
回复 使用道具 举报
1014917278 发表于 2014-6-6 12:17
%s的原理就是读到\0才停止读取,又因为内存地址是从大到小分配的,输出name1找不到\0它会继续输出直到\0为 ...

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

刚找到相关视频了,应该是这样理解的,谢谢哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马