打印

c 程序开发中二级指针的应用讨论

[复制链接]
1546|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shenmu2012|  楼主 | 2017-12-28 23:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个我们经常见到程序中有这样的定义的,如char **pt,,这个理解起来就是说指针的指针,,一个*的表示取这个变量地址所存的值,那么两个呢?
沙发
shenmu2012|  楼主 | 2017-12-28 23:45 | 只看该作者
也百度了一下下的,,
大概定义的意思如下:
A(即B的地址)是指向指针的指针,称为二级指针,用于存放二级指针的变量称为二级指针变量.根据B的不同情况,二级指针又分为指向指针变量的指针和指向数组的指针.

有些抽象的,还是不容易理解的。。

使用特权

评论回复
板凳
shenmu2012|  楼主 | 2017-12-28 23:46 | 只看该作者
首先任何值都有地址 ,一级指针的值虽然是地址,但这个地址做为一个值亦需要空间来存放,是空间就具有地址 ,这就是存放地址这一值的空间所具有的地址,二级指针就是为了获取这个地址。

一级指针所关联的是其值(一个地址)名下空间里的数据,这个数据可以是任意类型并做任意用途,但二级指针所关联的数据只有一个类型一个用途,就是地址,指针就是两个用途提供目标的读取或改写, 那么二级指针就是为了提供对于内存地址的读取或改写。。

使用特权

评论回复
地板
shenmu2012|  楼主 | 2017-12-28 23:47 | 只看该作者
楼上的理解,可以是这样的,指针说白了就是针对地址操作的,,取该地址处所存储的数据,可以是一个数据的,也可以是一组数据的,长度大小的一般都会另有限制的。。

使用特权

评论回复
5
shenmu2012|  楼主 | 2017-12-28 23:48 | 只看该作者
在详细归纳下的,,指针的表现形式是地址,核心是指向关系指针,运算符"*"的作用是按照指向关系访问所指向的对象.如果存在A指向B的指向关系,则A是B的地址,"*A"表示通过这个指向关系间接访问B.如果B的值也是一个指针,它指向C,则B是C的地址,"*B"表示间接访问C如果C是整型、实型或者结构体等类型的变量或者是存放这些类型的数据的数组元素,则B(即C的地址)是普通的指针,称为一级指针,用于存放一级指针的变量称为一级指针变量。

使用特权

评论回复
6
shenmu2012|  楼主 | 2017-12-28 23:49 | 只看该作者
看下该二级指针的分类:
指向指针变量的指针

在如上的A指向B、B指向C的指向关系中,如果A、B、C都是变量,即C是普通变量,B是一级指针变量,其中存放着C的地址,A是二级指针变量,其中存放着B的地址,则这3个变量分别在内存中占据各自的存储单元,它们之间的相互关系下图所示,相互之间的前后位置关系并不重要.此时,B是一级指针变量,B的值(即C的地址)是一级指针数据;A是二级指针变量,A的值(即B的地址)是二级指针数据.

使用特权

评论回复
7
shenmu2012|  楼主 | 2017-12-28 23:49 | 只看该作者
另:
指向数组的指针

在C语言中,数组与其它变量在使用上有很大的不同.无论是字符型、整型、实型变量,还是结构体类型或者指针类型的变量,语句中出现变量名都代表对该变量所在内存单元的访问,变量名代表整个变量在内存中的存储单元,可以向该变量赋值,也可以从中取出数据使用.但是定义一个数组之后,数组名并不代表整个数组所占据的内存单元,而是代表数组首元素的地址

使用特权

评论回复
8
shenmu2012|  楼主 | 2017-12-28 23:50 | 只看该作者
总之,指针的理解好了,就在开发中特别容易的

使用特权

评论回复
9
poijhgvfcd| | 2017-12-29 15:39 | 只看该作者
那和指针函数类似吗

使用特权

评论回复
10
chuntian2016| | 2017-12-29 21:50 | 只看该作者
二级指针就是为了提供对于内存地址的读取或改写,,这个对内存地址进行操作的哈

使用特权

评论回复
11
vibra2016| | 2017-12-29 21:52 | 只看该作者
这个二级指针的不是用的很少的么?

使用特权

评论回复
12
vibra2016| | 2017-12-29 21:52 | 只看该作者
经常性的设计中直接一级指针就搞定了的哈,,在转一次的,挺复杂的

使用特权

评论回复
13
shenmu2012|  楼主 | 2018-2-28 23:46 | 只看该作者
这种关于指向指针的指针的,也就是间接寻址的,还是要理解的

使用特权

评论回复
14
firstblood| | 2018-3-21 21:30 | 只看该作者
这二级指针的有用到的地方么?

使用特权

评论回复
15
firstblood| | 2018-3-21 21:30 | 只看该作者
这之前的我还没怎用到的,,也很少听说的

使用特权

评论回复
16
comeon201208| | 2018-3-21 23:29 | 只看该作者
shenmu2012 发表于 2017-12-28 23:49
另:
指向数组的指针

关于这二级指针的,楼上介绍的非常详细

使用特权

评论回复
17
comeon201208| | 2018-3-21 23:29 | 只看该作者
这种用法的我倒没怎么用的,一般都是直接指针的

使用特权

评论回复
18
baimiaocun2015| | 2018-3-21 23:50 | 只看该作者
**pt这种指针的貌似应用不多的

使用特权

评论回复
19
tongbu2015| | 2018-3-22 20:26 | 只看该作者
一级指针的值虽然是地址,但这个地址做为一个值亦需要空间来存放,是空间就具有地址 ,这就是存放地址这一值的空间所具有的地址,二级指针就是为了获取这个地址

使用特权

评论回复
20
vivilzb1985| | 2018-3-25 21:52 | 只看该作者
这些概括起来就是间接寻址的问题的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

76

主题

4324

帖子

9

粉丝