| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2883 人关注过本帖
标题:关于二维数组赋值语句
只看楼主 加入收藏
natto
Rank: 1
等 级:新手上路
帖 子:27
专家分:5
注 册:2016-4-10
结帖率:70%
收藏
已结贴  问题点数:10 回复次数:5 
关于二维数组赋值语句
定议:int *p,a[3][4];

那么,在二维数组中,指针变量p的基类型与a[i]相同,因此赋值语句p=a[i]是合法的。a[i]能写成*(a+i)。因此赋值语句可以写成:
p=*(a+i);

如上,上面是教材内容,说这样赋值是对的,一直想的不太明白的是,p是指针,那得到的不应该是地址么,但表达式右边得到的是一个地址所在存储单元的值,怎么会对呢?
所以请教:
1、*这个运算符加在赋值号右边不就是表示的是(a+i)这个存储单元地址中的值么,怎么还会是可以赋值给存储地址的p这个指针变量呢
2、a[i]能写成*(a+i),这个可以理解,这是作为值时可以相等,若是作为地址时,*(a+i)都不是表示地址的,怎么可以赋值给一个指针变量呢?这样还可以将a[i]写成*(a+i)??

希望各位前辈指教

[此贴子已经被作者于2016-4-22 18:21编辑过]

搜索更多相关主题的帖子: 表达式 
2016-04-22 17:57
feng59183175
Rank: 1
等 级:新手上路
帖 子:12
专家分:7
注 册:2016-4-18
收藏
得分:7 
p是一个变量吧。。
*(a+i)代表了一个变量。。
我是这么理解的。。。
我也刚学。。
2016-04-22 19:45
natto
Rank: 1
等 级:新手上路
帖 子:27
专家分:5
注 册:2016-4-10
收藏
得分:0 
回复 2楼 feng59183175
p是变量,但不是普通变量,如果p是普通变量的话,我就对这个没有任何疑问了
2016-04-22 21:47
natto
Rank: 1
等 级:新手上路
帖 子:27
专家分:5
注 册:2016-4-10
收藏
得分:0 
为什么看的人这么多,答的人这么少,是我表述的不清么,管理,你们也来答答呗
2016-04-23 20:07
藤田惠美
Rank: 1
等 级:新手上路
帖 子:6
专家分:2
注 册:2016-10-3
收藏
得分:0 
我是c语言新人 一块探讨:
好像二维数组中的a[i]代表的是第i+1行数组元素的首地址,第i+1行数据看作是一维数组的话,a[i]就是数组名。
2016-10-11 21:23
kkggkk
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-10-21
收藏
得分:0 
回得少,是因为你发错版面了,这里是『 C图形专区 』,应该到外面去。

int *p,a[3][4];
等效于
int *p;
int a[3][4];
指针和地址是一体的,没有错。
你搞错的是你说a[i]是存储单元的值,其实,对于你所定义的二维数组,a[i][j]才是内容值,a[i]是地址,地址赋给指针,一点问题也没有。
2016-10-21 14:32
快速回复:关于二维数组赋值语句
数据加载中...
 
   



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

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