偷偷告诉你C的有些难题是这样理解的(3)
1.一维数组
数组名
int a[];//这是一个int类型的数组,a是数组名,c = &a[0] 和 c = a 是一样的
a代表一个指针常量,也就是数组的第一个元素的地址,它的类型取决于数组类型,比如现在为int类型。
下标引用
array[subscript] == *(array + (subscript))// array 数组名,代表了第一个元素的地址,subscript代表着元素的个数。
int array[10];
int *ap = array +2;
ap = array +2 = &array[2];//array表示array[0]的地址,2表示2个元素,所以指针就知道了第三个元素
*ap //表示第三个元素的值
ap[0] = *(ap+0) = array[2] //C的下标引用和间接访问表达式式一样的
ap+6 = &array[8] = array +8
*ap + 6 = array[0] +6 // array[0]的值和6相加
*(ap+6) = array[8] // 数组中第八个元素的值
ap[6] = array[8]
&ap = &(array + 2) = &array[2]
ap[-1] = array[1] = *(array +2 - 1)
ap[9]//下标越界,要进行下标越界的检查