changyouren88 发表于 2017-12-17 19:15:19

向各位老师请教

#include <stdio.h>
int main(void)
{
int a=2, b = 3, c = 4;
      int *pa = &a,*pb = &b,*pc = &c;
      int    *num = {pa,pb,pc};
      char *str = {"geat","wall","china"};

      printf("%p\n",*(num+1));                // 1输出pb的地址,正确输出
      printf("%d\n",**(num+1));                // 2      输出b的值3,正确输出

      printf("%s\n",*(str+1));                        // 3      输出str的值 wall,真确输出;
      printf("%s\n",**(str+1));                        // 4      没有输出 且整个程序运行后出错;

      return 0;

}

向各位老师请教:num和str为相同的类型,同为指针数组,但是输出的不同的结果;例如:*(num+1)输出的是第1个元素pb的地址,而*(str+1)输出的不是第1个元素"wall”的地址而是wall本身;

BngThea 发表于 2017-12-17 20:06:12

因为你的num数组存放的是地址,而str存放的是字符串的首地址

changyouren88 发表于 2017-12-18 07:30:11

BngThea 发表于 2017-12-17 20:06
因为你的num数组存放的是地址,而str存放的是字符串的首地址

不都是地址吗?有什么不同呢?字符串首地址有什么不同?

BngThea 发表于 2017-12-18 08:09:09

changyouren88 发表于 2017-12-18 07:30
不都是地址吗?有什么不同呢?字符串首地址有什么不同?

字符串你不能通过指针索引直接获得整个字符串中的第二个字符的值

changyouren88 发表于 2017-12-18 08:47:27

哦,有点明白,多谢{:5_110:}
页: [1]
查看完整版本: 向各位老师请教