| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1158 人关注过本帖
标题:关于数组指针的一个问题
只看楼主 加入收藏
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:0 
你取的是地址怎么会对呢?

仰望星空...........不忘初心!
2013-02-12 20:31
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:5 
a是数组首地址,*p == a, p == &a,打印地址似乎p和a和*p是一样的,不过有意思的是...
%d,p[1]是地址,(*p)[1]和a[1]是数值
我猜编译器很教条地给了一维数组优惠...


莫问前尘有愧,但求今生无悔
2013-02-12 21:24
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
收藏
得分:0 
回复 12楼 pycansi
听你这么一说似乎明白了不少....相当于一个指向指针的指针....*p还是地址
2013-02-13 08:52
信箱有效
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1102
专家分:4268
注 册:2012-6-19
收藏
得分:5 
char a[3]
a是数组首元素地址 &a是数组地址  a+1是数组下一个元素地址
&a+1是下一个数组地址---------假设有的话。
a和 &a 2个的值虽然相同 意义不同。

char (*p)[3]
p是一个指针 指向一个数组 该数组包含有3个char型值
如有char m[][3]  那么这样是对的  p=m
这里p就相当于一个2维数组名,而且p也确实是被当作了2维
数组名来使用。那么*p表示的是什么还用说吗。

这两部分结合起来理解  应该能解决不少指针和数组之间的困惑 只是愿意去认真思考的人不多哇。
收到的鲜花
  • TonyDeng2013-02-13 14:03 送鲜花  20朵   附言:原创内容
2013-02-13 09:16
洫魇
Rank: 2
等 级:论坛游民
帖 子:46
专家分:34
注 册:2013-2-5
收藏
得分:0 
学习了.O(∩_∩)O

一切,都在输给时间.
2013-02-13 10:41
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
char a[3]={'w','d','\0'};
char (*p)[3]=&a;

程序员有两类,一类是力图把代码写得简明易懂,一类是力图把代码写的晦涩难懂。第二种写法属于第二类。

授人以渔,不授人以鱼。
2013-02-13 13:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
char a[3]={'w','d','\0'};
char (*p)[3]=&a;

*p,由于被用括号括住,所以必须作为一个整体看待,比如用b代替*p,就成了char b[3] = &a,在引用时,(*p)[1]正是'd',但p是一个指向3 char的指针,p+1的地址是向前跳3字节,这样p就相当于是二维数组的首地址,数组储存的是一堆指针。

(*p)[0]=a[0]='w'
(*p)[1]=a[1]='d'
(*p)[2]=a[2]='\0'
除此之外,使用p指针指向其他位置,都是未初始化的内存空间。

描红那个代码,并不能严格反映原代码的意义,因为很难找到准确匹配的写法,只能写成那样。但无论如何,原代码那种写法,是很难理解的,而且没发现有什么实用意义。

看看测试结果,特别留意后两列的地址:
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 TonyDeng 于 2013-2-13 14:50 编辑 ]

授人以渔,不授人以鱼。
2013-02-13 14:37
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:0 
....

仰望星空...........不忘初心!
2013-02-13 16:10
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
收藏
得分:0 
回复 17楼 TonyDeng
也就是说....p=a    *p=﹠a....都是地址...**p才是元素值...相当于一个二级指针了?
2013-02-13 16:30
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:0 
楼上是哪个学校的?

仰望星空...........不忘初心!
2013-02-13 16:39
快速回复:关于数组指针的一个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018243 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved