黑马程序员技术交流社区

标题: 编程中遇到的小问题关于字符的 [打印本页]

作者: Freedam    时间: 2014-4-14 21:20
标题: 编程中遇到的小问题关于字符的
本帖最后由 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]可以这样写,程序编译通过可以运行。
作者: 悟中生有    时间: 2014-4-14 21:44
我是这样理解的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. }
复制代码

作者: m573555543    时间: 2014-4-15 12:38
c = "0123456789"[8];把这个0123456789当成当成指针,指向这个字符串。
相当于: const char *data="0123456789";
c=data [8】
作者: 悠悠·漠漠    时间: 2014-4-16 00:20
我是这样理解的,存在一个数组存储"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. }
复制代码

不确定这么理解对否!




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