对数组名进行取地址运算
int a[] = {1,2,3}; int (*p)[3] = &a; //注意左值
对数组名取地址,得到的指针为指向整个数组的指针。
形参数组
形参为数组时勿须带数组长度,因为计算机不会处理,如果需要传数组长度,需要另外加参数。
一维数组指针
1 #include <stdio.h> 2 3 //void array_add(int a[], int len) 4 void array_add(int *p, int len) 5 { 6 int i = 0; 7 8 for(i=0; i<len; i++) 9 p[i]++; 10 } 11 int main(void) 12 { 13 int a[] = {1,2,3}; 14 int i = 0; 15 int *p1 = a; 16 int (*p2)[3] = &a; 17 int len = sizeof(a)/sizeof(int); 18 19 array_add(a,len); 20 for(i=0; i<len; i++) 21 printf("%d\t", a[i]); 22 printf("\n"); 23 24 printf("a[1] = %d\n", *(p1+1)); 25 printf("a[1] = %d\n", p1[1]); 26 printf("a[1] = %d\n", 1[p1]); 27 28 printf("a[1] = %d\n", (*p2)[1]); 29 printf("a[1] = %d\n", *(*p2 +1)); 30 31 return 0; 32 }