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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© smilejoke 中级黑马   /  2015-8-26 19:15  /  1037 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. #include <stdio.h>
  2. void test()
  3. {
  4.     char str[ ]="ab\013\r\082\\\"";

  5. printf("%lu",strlen(str));

  6. }


  7. int main(int argc, const char * argv[]) {

  8.     char c[]="heima";
  9.     char d[]={'h','e','i','m','a'};
  10.    
  11.     printf("%lu\n",(sizeof(c) / sizeof(c[0])));
  12.     printf("%d\n",sizeof(d) / sizeof(d[0]));
  13.     printf("长度%d",strlen(c));
  14.     printf("长度%d",strlen(d));
  15.     printf("%s",d);
  16.     return 0;
  17. }
复制代码
这段代码执行后为什么xcode会输出如下6
5
长度5长度10heimaheimaProgram ended with exit code: 0

8 个回复

倒序浏览
有什么问题么?

回复 使用道具 举报
过来学习下
回复 使用道具 举报
长度和字符个数
回复 使用道具 举报
字符串和字符数组是不一样的 所有的字符串都是以 '\0' 结尾 自然会多一位
回复 使用道具 举报
最后一行 d 是个字符数组 可以用 %s 输出吗?
回复 使用道具 举报
tr2e 中级黑马 2015-8-27 11:00:38
7#
strlen(d) 同样有疑问 可以这样对一个字符数组使用字符串的函数?
回复 使用道具 举报
过来凑下热闹。
回复 使用道具 举报
char c[]="heima";//这句是定义一个常量字符串,字符串是以\0结束
char d[]={'h','e','i','m','a'};//这句是定义一个字符数组,最后没有\0
用%S是这样输出的:从给定的地址开始输出,一直遇到\0就结束,而d是存放在内存低地址,c存放在高地址,输出d的时候没有\0所以会把接下来的c也一同输出,遇到c的\0就结束输出
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马