总结大全
- a:数组首元素地址
- &a:数组首元素的地址
- &a[0]:数组首元素的地址
- *a:数组首元素的值
- *(a+n):数组第(n+1)个元素(index为n的元素)的值
- a+n:数组首元素的地址加上n个元素的字节数
- &a+n:数组首元素的地址加上n倍数组的字节数
- *(&a+1):数组首元素的地址加上整个数组的字节数,和(&a+1)一样,相当于数组末尾地址+1
- *(&a+1)-n:数组倒数第n个元素的地址
- *(*(&a+1)-n):数组倒数第n个元素的值
#include
int main()
{
int a[8] = {1, 2, 4, 8, 16, 32, 64, 128};
// TEST1
printf("测试1:\n%d\n", a);
// TEST2
printf("测试2:\n%d\n", *a);
// TEST3
printf("测试3:\n%d\n", &a[0]);
// TEST4
printf("测试4:\n%d\n", &a);
// TEST5
printf("测试5:\n%d\n%d\n", *(a+1), *(a+3));
// TEST6
printf("测试6:\n%d\n%d\n", (a+2), (a+5));
// TEST7
printf("测试7:\n%d\n%d\n%d\n", (&a+1), (&a+2), (&a+3));
// TEST8
printf("测试8:\n%d\n", *(&a+1));
// TEST9
printf("测试9:\n%d\n%d\n%d\n", *(&a + 1)-1, *(&a + 1)-2, *(&a + 1)-3);
// TEST10
printf("测试10:\n%d\n", *(*(&a + 1)-1));
return 0;
}
测试结果
测试1:
6422016
测试2:
1
测试3:
6422016
测试4:
6422016
测试5:
2
8
测试6:
6422024
6422036
测试7:
6422048
6422080
6422112
测试8:
6422048
测试9:
6422044
6422040
6422036
测试10:
128