| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2033 人关注过本帖
标题:问一个二维数组和指针的问题?
只看楼主 加入收藏
li1876696
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-4-10
结帖率:0
收藏
已结贴  问题点数:5 回复次数:10 
问一个二维数组和指针的问题?

比如定义一个二维数组int a[3][5], 我们知道a是这个二维数组的首地址,a[0]是第一行元素的首地址,假设这个二维数组的第一个元素a[0][0]值赋1,a[0][0]元素的地址值是1000,那么a[0]的地址值应该是1000,取里边的值,即*a[0]就是1,那么a的地址值也是1000.取里边的值,a可以看成指向数组指针的指针,所以*a的值也就是1000.那么我的问题是1000这个地址里放的值既可以是1000也可以是1?该怎么理解呢?以前写程序没怎么用到二维数组这块,今天无意间发现了这个问题,求解决!
搜索更多相关主题的帖子: 维数 指针 地址 元素 今天 
2017-05-09 13:42
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:1 
“1000这个地址里放的值既可以是1000也可以是1?”---不同时候才有可能。
同一地址空间同一时候不可能有两种状态吧?
*a的值==a[0]的值==1000(地址),*(*a)的值==*(a[0])的值==1(地址空间存在的数值)。
2017-05-09 13:57
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:1 
地址就是地址  值就是值  二者没有任何关联

DO IT YOURSELF !
2017-05-09 14:07
li1876696
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-4-10
收藏
得分:0 
回复 2楼 吹水佬
我的意思是a的值是1000(地址),a[0]的值也是1000(地址),但你分别对其取值,会发现*a[0]是个1.而*a是1000. 也就是说,相同地址1000这个值就没有了固定的值了(1还是1000)?
2017-05-09 14:15
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用li1876696在2017-5-9 14:15:15的发言:

我的意思是a的值是1000(地址),a[0]的值也是1000(地址),但你分别对其取值,会发现*a[0]是个1.而*a是1000. 也就是说,相同地址1000这个值就没有了固定的值了(1还是1000)?

对于 int *p=(int*)a,这时的p地址表达的是一个数据的地址,能用*p来获取这个数。
对于 int a[3][4],这时的a地址表达的是一组数据的地址,不能用*a来获取这组数或某个数。
2017-05-09 15:18
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:1 
所有的问题归根结底就在“int a[3][5], 我们知道a是这个二维数组的首地址”这一谬误说法之上。

2017-05-09 16:34
li1876696
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-4-10
收藏
得分:0 
回复 6楼 rjsp
能详细说一下吗?谢谢!
2017-05-09 17:13
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:1 
a是整个二维数组的首地址,它的类型是 (*)[]
*a是二维数组第一个元素的首地址,它的类型是 *(PS,二维数组的元素,是一个数组)
**a是二维数组第一个元素的第一个值。

C语言实际上并没有真正意义上的多维数组,而是数组的数组。

[此贴子已经被作者于2017-5-9 18:34编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-09 18:31
wuyexinfei
Rank: 1
等 级:新手上路
帖 子:9
专家分:3
注 册:2017-5-7
收藏
得分:1 
楼主把指针的指针和二维数组首地址弄混了..
二维数组在内存中是一连串的排列的  二维数组a 和a【0】 还有a【0】【0】都是一个地址.
指针的指针 则是 a指向b的地址 b又指向c
 体会下 是不一样的
2017-05-09 20:20
li1876696
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-4-10
收藏
得分:0 
回复 8楼 renkejun1942
多谢,理解了
2017-05-10 10:47
快速回复:问一个二维数组和指针的问题?
数据加载中...
 
   



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

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