Sle*_*der 5 c arrays printf pointers
#include <stdio.h>
int main(void) {
int a[4][2] = { {11, 12}, {21, 22}, {31, 32}, {41, 42} };
int *p = a[0];
printf("%d\n", *p);
printf("%d\n", p);
printf("%d\n", a[0]);
printf("%d\n", &p);
printf("%d\n", &a[0]);
printf("%d\n", a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
看看上面的代码.
在我的理解中,因为p等于a[0],&p并且&a[0]应该具有相同的值.
但实际输出如下:
11
1772204208
1772204208
1772204200
1772204208
1772204208
Run Code Online (Sandbox Code Playgroud)
为什么&p和&a[0]不同?
什么是&p代表?
p是指向整数的指针.它存储在一个地址中,它还存储一个地址.
打印p将打印地址p点.
打印*p打印的价值p指向.
打印&p打印的地址p是唯一的,p并在声明时分配.
int *p_2 = &p;
Run Code Online (Sandbox Code Playgroud)
p_2 将具有相同的价值 &p
每个变量都有自己唯一的地址!