数组和指针问题,求指导
#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型地址的取值吧? *应该是取值运算符吧,为什么加上之后反而编译不通过呢~ b 是指针没错。
声明的时候加* 如 int *b;
付地址的时候(也可说让指针指向某个地方的进候)直接赋值如 b = &a;
当要取b指针指向的值时加* 如 printf("%d\n", *b);
b[-2] 是以数组的方式索引数组中的值。(首先你得明白数组和指针是息息相关的)
-2 意指 b的当前地址 减2个int型大小(4个字节)
b当前指向的是 4
看图:
ba21 发表于 2018-12-31 23:36
b 是指针没错。
声明的时候加* 如 int *b;
感谢细心解答!已懂!
页:
[1]