OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3894|回复: 13

二级指针,求指点

[复制链接]

76

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2012-9-19
在线时间
5 小时
发表于 2013-5-30 10:21:27 | 显示全部楼层 |阅读模式
二级指针,我看书上面说是。指向指针的指针,很好理解,那么他就是的**p才能拿出上一个指针内的实际内容,但是我迷惑的是,他具体应用又在哪里?
查阅网上说它“当想改变指针的值的时候不妨考虑使用二维指针 。”不理解。直接改第一个指针就行了。干嘛要费劲的来个二维指针来改指针的指针呢?
希望大家帮我解答一下疑惑。这里请不要用二维数组来解析,因为二维数组虽然和它很像。但压根就没关系,希望大家解释时候不要参合进二维数组,会让人更迷糊。谢谢
具有资深STM32点灯技术,
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-5-30 10:37:50 | 显示全部楼层
虽然也用过,但是不是很明确,高手顺带教教我吧,呵呵.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2013-5-30 10:42:09 | 显示全部楼层
虽然用过,还是不算太深入的明白。顶,请高手顺便教教我。= =
一直努力就很好。
回复 支持 反对

使用道具 举报

76

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2012-9-19
在线时间
5 小时
 楼主| 发表于 2013-5-30 10:59:30 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
最近发现自己的编程能力有待优化,听说看linux 的源码内核会提高,,所以我问问您。您有推荐的板子没?像ARM9能跑的起LINUX的板子。推荐一个。或者您那儿有这类的研发吗
具有资深STM32点灯技术,
回复 支持 反对

使用道具 举报

头像被屏蔽

6168

主题

7036

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
19705
金钱
19705
注册时间
2012-12-27
在线时间
25 小时
发表于 2013-5-30 11:43:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2013-5-30 11:58:01 | 显示全部楼层
LS打酱油的。顺便说下,楼主,内核里面才叫恐怖。而且C是无底的。ucos就有。
一直努力就很好。
回复 支持 反对

使用道具 举报

6

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2012-11-30
在线时间
0 小时
发表于 2013-5-30 18:57:43 | 显示全部楼层
回复【楼主位】敌害:
---------------------------------
我举得例子:
函数调用中,传递一维指针,可以改变的是调用函数中原指针指向的内容
传递二维指针,可以改变的是调用函数中原指针的指向,以及其指向的内容

实际应用是链表操作时,会经常遇到,如主函数中创建链表的头指针时,
传递二维指针,可令头指针指向相应的动态分配的内存
传递一维指针,会造成内存泄露
回复 支持 反对

使用道具 举报

6

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2012-11-30
在线时间
0 小时
发表于 2013-5-30 18:58:06 | 显示全部楼层
回复【楼主位】敌害:
---------------------------------
我举得例子:
函数调用中,传递一维指针,可以改变的是调用函数中原指针指向的内容
传递二维指针,可以改变的是调用函数中原指针的指向,以及其指向的内容

实际应用是链表操作时,会经常遇到,如主函数中创建链表的头指针时,
传递二维指针,可令头指针指向相应的动态分配的内存
传递一维指针,会造成内存泄露
回复 支持 反对

使用道具 举报

76

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2012-9-19
在线时间
5 小时
 楼主| 发表于 2013-5-31 11:32:23 | 显示全部楼层
回复【8楼】YS晓:
---------------------------------
DINGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
具有资深STM32点灯技术,
回复 支持 反对

使用道具 举报

6

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2012-11-30
在线时间
0 小时
发表于 2013-5-31 16:51:04 | 显示全部楼层
回复【9楼】敌害:
---------------------------------
?
回复 支持 反对

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1635
金钱
1635
注册时间
2012-8-28
在线时间
71 小时
发表于 2013-5-31 17:38:31 | 显示全部楼层
回复【8楼】YS晓:
---------------------------------
你是说A的地址*PA           用**PA改变*PA的指向?那和*(PA++)或者*(PA=寄存器地址)一样
QQ750273008有好的资料记得发给我哦。。。
回复 支持 反对

使用道具 举报

26

主题

194

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1175
金钱
1175
注册时间
2011-8-20
在线时间
21 小时
发表于 2013-5-31 22:01:32 | 显示全部楼层
回复【4楼】敌害:
---------------------------------
跑linux不一定要开发板啊,你装个虚拟机就ok了。看源码你去官网下载就行了,你也可以make一个x86平台的linux在你的虚拟机里面玩啊。
for( int i=0; i<(1.0/0); i++ ) { for( int j=0; j<365; j++) money ++; age ++; if( age > 30 ) ChangeJob( Boss ); } 脸上的痘痘提醒我?我还年轻?口袋的米米告诉我?我仍需努力
回复 支持 反对

使用道具 举报

6

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2012-11-30
在线时间
0 小时
发表于 2013-6-1 08:48:52 | 显示全部楼层
回复【11楼】750273008:
---------------------------------
你是说A的地址*PA           用**PA改变*PA的指向?
A的地址是pA, 那么*pA就等同于A

算了,我用纯C的单链表举例子
int * pA = NULL;
Create1(pA);    //传递一级指针
Create2(&pA);  //传递二级指针

printf("%p\n", pA);
随便你怎么实现Create这个函数,你输出看下,是不是只有传递二级指针时,输出结果非0
那么证明,有且只有传递二级指针,才能改变pA的值(也即pA的指向),
传递1级指针根本不可能改变pA的值,也就是pA的指向
回复 支持 反对

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1635
金钱
1635
注册时间
2012-8-28
在线时间
71 小时
发表于 2018-1-27 17:13:22 | 显示全部楼层
YS晓 发表于 2013-6-1 08:48
回复【11楼】750273008:
---------------------------------
你是说A的地址*PA&nbsp;&nbsp;&nbsp;&nbsp;&nb ...

int n=*( (volatile long *) 0x40020010);
这个是二级指针吗?
我只知道是在0x40020010的地址上,取值后转volatile long 类型,给int类型的n。而且long的高位会被丢弃,只保留int的长度。
QQ750273008有好的资料记得发给我哦。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 17:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表