免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6067 | 回复: 18
打印 上一主题 下一主题

[C] (求助)指针与二维数组的关系 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-01-15 10:28 |只看该作者 |倒序浏览
    如图所示,定义了zip[4][2],图中箭头表示指向关系。                     
    1.想问我的这个图是正确的么?
    2.由于zip和zip[0]具有相同的数值(当然类型不相同),那么zip[0]是不是具有地址等于其数值呢?
    3.如果是,假设zip[0]地址addr,那么addr处的值也是addr,由于zip[0]指向zip[0][0],那么意味着addr存储的数值是zip[0][0],那么就会矛盾。
    我的理解一定有错,但我不知道哪里错了,还望指教。

QQ截图20140115102422.png (4 KB, 下载次数: 110)

QQ截图20140115102422.png

论坛徽章:
2
天秤座
日期:2014-01-15 13:50:58天秤座
日期:2014-02-19 17:09:23
2 [报告]
发表于 2014-01-15 11:07 |只看该作者
本人不才,说一下自己的看法哈

数组名代表数组首地址,而数组首地址与数组第一个元素的地址相同

zip[0]是zip[0][0]的地址,但是addr是zip[0]的地址,只是地址这个“值”相同
而不代表可以从addr指向zip[0][0]

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
3 [报告]
发表于 2014-01-15 11:44 |只看该作者
那么addr处的值也是addr
------ 数组又不是指针

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
4 [报告]
发表于 2014-01-15 13:36 |只看该作者
你可以理解为,只有zip是真实存在的,编译阶段zip会被作为一个符号,它有起始地址和大小,但是zip[0]或者zip[0][0],还是zip[1][0]都不是真实存在的;编译的时候遇到zip[0]、zip[0][0]、zip[1][0]等会根据你所指定的参数将地址从zip起始地址偏移过去;编译完毕zip符号也没有了。所以zip[0]等这些东西它有类型,但它并不“额外”占用任何内存空间。

论坛徽章:
2
天秤座
日期:2014-01-15 13:50:58天秤座
日期:2014-02-19 17:09:23
5 [报告]
发表于 2014-01-15 13:52 |只看该作者
回复 4# w_anthony

原理是按照偏移量来查找的是吧,我的那个说法就不对了,根本不存在那些中间地址,是吧?
学习了~
   

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:50:28
6 [报告]
发表于 2014-01-15 14:07 |只看该作者
结论是数组的值不是指针?

论坛徽章:
6
寅虎
日期:2013-10-10 21:59:16狮子座
日期:2013-11-12 09:24:41金牛座
日期:2013-12-14 17:02:23酉鸡
日期:2014-01-16 12:34:37技术图书徽章
日期:2014-02-15 12:52:31巨蟹座
日期:2014-05-17 14:09:52
7 [报告]
发表于 2014-01-15 15:20 |只看该作者
本帖最后由 fergon 于 2014-01-15 15:23 编辑

要理解数组,我认为应该同时对几个概念作一番系统的认识,不要孤立地看待它。
变量、类型
指针、指针变量
一维数组与多维数组的关系

随着深入,还会遇上左值和右值这些令人恼火的东西。

这篇文章说得比较深入,你应该阅读一下。
http://blog.csdn.net/code_crash/article/details/4855027
http://blog.csdn.net/supermegaboy/article/category/622235

论坛徽章:
0
8
发表于 2014-01-16 10:37
回复 4# w_anthony


    谢谢你,你说的太好了,这样我就完全可以理解了!

论坛徽章:
0
9 [报告]
发表于 2014-01-16 10:38 |只看该作者
回复 7# fergon


    谢谢推荐这篇文章,我目前看的很吃力,有机会好好拜读!

论坛徽章:
0
10 [报告]
发表于 2014-01-16 10:39 |只看该作者
回复 2# 除美灭日平韩


    谢谢回复,你说的是对的,我也可以理解。可能我的问题没有表述清楚,所以没得到我的答案!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP