1,指針變量存放的是4個字節,如果變量的所占字節超過四個字節給出代碼:
1 #include <stdio.h>
2 int main(int argc, char *argv[])
3 {
4 double arr[]={1,2,3,4,5};
5 double * p=&arr[0];
6 printf("%p\n",p);
7 p=&arr[1];
8 printf("%p\n",p);
9
10 return 0;
11 }

2,如果使用一個沒有返回值得函數修改指針變量的地址,代碼如下:
1 #include <stdio.h>
2 #include <stdlib.h>
3 void p_add(double **q);
4 int main(int argc, char *argv[])
5 {
6 double arr[]={1,2,3,4,5};
7 double * p=&arr[0];
8 printf("%p\n",p);
9 p_add(& p);
10 printf("%p\n",p);
11 return 0;
12 }
13 void p_add(double **q)
14 {
15 *q=(double *)malloc(sizeof(double *));
16 }
3,指針和數組的關系,知道數組的首地址和長度,那麼可以用指針來表示這個數組了
1 #include <stdio.h>
2 #include <stdlib.h>
3 void output( int*q,int len);
4 int main(int argc, char *argv[])
5 {
6 int arr[]={1,2,3,4,5};
7 int len=sizeof(arr)/sizeof(arr[1]);//一定是個正整數
8 output(arr,len) ;
9 return 0;
10 }
11 void output(int *q,int len)
12 {
13 int id;//c 語言需要先聲明
14 for(id=0;id<len ;id++ )
15 {
16 printf("%d\t",*(q+id));
17 //printf("%d\t",q[id]);
18 }
19 printf("\n");
20 }
其實指針和數組並非一個概念,他們之間是有區別的,比如第7行,數組名arr作為數組首地址等同於&arr[0],但是sizeof(arr)跟sizeof(arr[0])和sizeof(q) 是兩回事,以後會再說
未完待續……