偷偷告诉你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]//下标越界,要进行下标越界的检查

 

posted @ 2010-04-05 19:41  云端小飞象cg  阅读(192)  评论(0编辑  收藏  举报