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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Freedam 中级黑马   /  2014-4-14 21:20  /  1120 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Freedam 于 2014-4-19 00:55 编辑
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int main()
  4. {
  5.     char c;
  6.     c = "0123456789"[8];
  7.     printf("%c",c);
  8.     return 0;
  9. }
复制代码

请大家帮忙解释一下这段程序,主要是为什么这个"0123456789"[8]可以这样写,程序编译通过可以运行。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

3 个回复

倒序浏览
我是这样理解的C语言字符串内部其实也和字符数组差不多的,"0123456789"[8] 这样写,和访问字符数组下标为c[8]的元素的道理应该是一样的。
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     char c;
  5.     c = "0123456789"[8];
  6.    
  7.     char c1[] = "0123456789";
  8.    
  9.     printf("%c\n",c);
  10.     printf("%c\n",c1[8]);
  11.     return 0;
  12.     //运行结果是一样的
  13. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
c = "0123456789"[8];把这个0123456789当成当成指针,指向这个字符串。
相当于: const char *data="0123456789";
c=data [8】

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
我是这样理解的,存在一个数组存储"0123456789",char c="123456789"[8]就是存储该数组下标为8所对应的字符
  1. #include <stdio.h>

  2. int main(void){
  3.         int i;
  4.         for(i=0;i<7;i++)
  5.         {
  6.                 char c="ABCDEFG"[i];
  7.                 printf("%c\n",c);               
  8.         }
  9. }
复制代码

不确定这么理解对否!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马