首页 > 其他 > 详细

指针理解

时间:2021-05-16 09:59:47      阅读:21      评论:0      收藏:0      [点我收藏+]

看到这句话好像有点明白了函数里通过二级指针修改内容 

int *p = &a;//函数传入时如下

void eaxm(int *s){} ,传入的p 指向的地址(是a的地址),而不是p本身的地址,要想修改p需要传入指针p的地址

void exam0(int **s){}   这里传入的就是指针p的地址,s指向就是p的地址

技术分享图片

s是指向指针p的指针 

申请空间也是,一级指针传入时,形参s只是临时的一个变量,malloc为s申请空间后,s和传入函数的变量没有关系,这块空间也不会共用。二级指针的时候,传入的是指针(假设为q)的地址,虽然s的空间是另外的空间,但是s指向的那块空间就是q的值,所以 可以申请这里*s ,相当于也为q申请了

————————————————————————————————————————————————————————————————

 指针数组:int *p[5];

数组指针:int (*p)[5];

首元素地址:p,&p[0];数组首地址:&p; 数组首地址值与首元素地址相同,但含义完全不同。&p,是将整个数组作为一个新的数组类型,&p就是这个类型对应内存空间的首地址。

                    举例

                   技术分享图片这里arr+1地址加了4个字节,而&arr则是20个。

 

指针理解

原文:https://www.cnblogs.com/qilichenhua/p/14773010.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!