对数组名进行取地址运算

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 }
View Code

相关文章: