pbyanglove 2020-06-09
(1) a 作为数组名,代表数组首元素地址;第二个元素地址为a+1, 第n个元素地址为a+n;
(2) 由上可得,数组的元素值; 首元素值*a 相当于 a[0] ; 第二个元素值*(a+1) 相当于a[1],第n个元素值为*(a+n) 相当于 a[n];
(3) 由上可得,数组的首元素地址也可以写为 &a[0] 相当于 a ; 第二个元素地址为&a[1] 相当于 a+1 , 第n个元素地址为 &a[n] 相当于 a+n;
(4) &a 作为数组地址,不同于以上,需要用取地址符&才能得到,且取的是整个数组的地址,&a+1表示指向整个数组的最后面的位置;
(5) &(a+1) 非法语句
#include <stdio.h> int main() { int a[8] = {0}; printf("a 数组首地址:%p\n", a); printf("&a[0]数组首地址:%p\n", &a[0]); printf("&a 数组首地址:%p\n", &a); printf("------------------\n\n"); printf("a+1 数组第二个元素地址:%p\n", a+1); printf("&a[1] 数组第二个元素地址:%p\n", &a[1]); printf("&a+1 数组最后一个位置:%p\n", &a+1); printf("------------------\n\n"); printf("a+8 数组最后一个元素地址:%p\n", a+8); printf("&a[8] 数组最后一个元素地址:%p\n", &a[8]); printf("&a+1 数组最后一个位置:%p\n", &a+1); } a 数组首地址:0x7ffdd2b194f0&a[0]数组首地址:0x7ffdd2b194f0&a 数组首地址:0x7ffdd2b194f0------------------ a+1 数组第二个元素地址:0x7ffdd2b194f4&a[1] 数组第二个元素地址:0x7ffdd2b194f4&a+1 数组最后一个位置:0x7ffdd2b19510------------------ a+8 数组最后一个元素地址:0x7ffdd2b19510&a[8] 数组最后一个元素地址:0x7ffdd2b19510&a+1 数组最后一个位置:0x7ffdd2b19510