1. 实验现象

2. 结果讨论
a是数组第一个元素的地址,&a是整个数组的地址,虽然二者值相等,但是在加1后的地址变化不一样,注意上图⬆️
3. 实验代码
1 #include <stdio.h>
2
3 int main()
4 {
5 int a[10] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
6 int i;
7
8 printf("-----------------------------------\n");
9 printf("int a[10] : ");
10 for (i = 0; i < 10; i++)
11 {
12 printf("%d ",a[i]);
13 }
14 printf("\n");
15 printf("-----------------------------------\n");
16 printf("a : %p\n", a);
17 printf("a+1 : %p\n", a+1);
18 printf("*a : %d\n", *a);
19 printf("*(a+1) : %d\n", *(a+1));
20 //printf("*a+1 : %d\n", *a+1); //常数加1 为10
21 printf("-----------------------------------\n");
22 printf("&a : %p\n", &a);
23 printf("&a+1 : %p\n", &a+1);
24 //printf("&(a+1) : %p\n", &(a+1)); //rvalue error 无法读取(如:&123)
25 //int *b; //定义一个新的指针变量,存储a+1,在&(a+1)即可。
26 //b = a + 1;
27 //printf("&(a+1) : %p\n", &b);
28 printf("**(&a) : %d\n", **(&a));
29 printf("**(&a+1) : %d\n", **(&a+1));
30 //printf("**(&(a+1)): %d\n", **(&(a+1))); //rvalue error 无法读取
31 printf("-----------------------------------\n");
32 printf("&a[0] : %p\n", &a[0]);
33 printf("&a[0]+1 : %p\n", &a[0]+1);
34 printf("*(&a[0]) : %d\n", *(&a[0]));
35 printf("*(&a[0]+1): %d\n", *(&a[0]+1));
36 printf("-----------------------------------\n");
37 return 0;
38 }