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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王海江1 中级黑马   /  2014-6-25 21:21  /  1010 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

main()
{
    char  b[]="Hello,you";
    b[5]=0;
    printf("%s\n", b );
}

这道题的内存是如何分配的???????b[5]是什么类型的数组?????

5 个回复

倒序浏览
b[5]=0;     0在内存中是\0吗????
回复 使用道具 举报
首先给数组分配内存空间,并自动在结尾加\0,因为Hello,you是9个字符加上默认添加的\0一共占用了10个char空间的内存。b[5]=0; 当整数存入char型时,是支持的,因为在C中char就是用数字存储的,对应各自的ASCII码 0应该对应空格吧
回复 使用道具 举报
陨石 发表于 2014-6-25 22:00
首先给数组分配内存空间,并自动在结尾加\0,因为Hello,you是9个字符加上默认添加的\0一共占用了10个char空 ...

输出的结果是:Hello,输出字符串时遇到空格应该不结束才对啊
回复 使用道具 举报

\0的ASCII值是0,所以b[5]='\0';最后只能输出Hello
回复 使用道具 举报
首先,b[5]是数组元素,这个存储单元是char类型的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马