ahr123 发表于 2018-12-31 23:02:25

数组和指针问题,求指导

#include <stdio.h>

int main()
{
      int a = {1, 2, 3, 4, 5};
      int *b;

      b = &a;
      printf("%d\n", b[-2]);

      return 0;
}
个人理解 , b 是一个指针,为什么不需要加*呢,*b【-2】,才是b指针向前2个int型地址的取值吧?

ahr123 发表于 2018-12-31 23:05:41

*应该是取值运算符吧,为什么加上之后反而编译不通过呢~

ba21 发表于 2018-12-31 23:36:14

b 是指针没错。

声明的时候加*    如 int *b;
付地址的时候(也可说让指针指向某个地方的进候)直接赋值如 b = &a;
当要取b指针指向的值时加* 如 printf("%d\n", *b);

b[-2] 是以数组的方式索引数组中的值。(首先你得明白数组和指针是息息相关的)
-2 意指 b的当前地址 减2个int型大小(4个字节)
b当前指向的是 4

看图:

ahr123 发表于 2019-1-1 09:41:40

ba21 发表于 2018-12-31 23:36
b 是指针没错。

声明的时候加*    如 int *b;


感谢细心解答!已懂!
页: [1]
查看完整版本: 数组和指针问题,求指导