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) 是两回事,以后会再说
未完待续……
时间: 2024-10-10 01:46:29