代码艺术家
Code artist

很喜欢释迦牟尼佛的一句话:“无论你遇见谁,他都是你生命该出现的人,绝非偶然,他一定教会你一些什么”。

有问题 问我 问Google

指针变量复习

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) 是两回事,以后会再说

未完待续……

posted @ 2015-07-28 01:05  Jason‘  阅读(334)  评论(0编辑  收藏  举报