社区
C语言
帖子详情
二维数组中,首地址和0元素的地址有什么区别
napoleonpan
2003-08-18 09:53:56
定义一个二维数组啊a[n][n]
我看书上说*(a+i)是指第i行第0元素的地址,而a+i是指第i行的首地址,这两者地址值相同,那么有什么区别吗?
某行的首地址和此行的第0元素地址这两个概念都是各用在什么地方的?
书上没写明白,我也搞不清楚.
...全文
502
10
打赏
收藏
二维数组中,首地址和0元素的地址有什么区别
定义一个二维数组啊a[n][n] 我看书上说*(a+i)是指第i行第0元素的地址,而a+i是指第i行的首地址,这两者地址值相同,那么有什么区别吗? 某行的首地址和此行的第0元素地址这两个概念都是各用在什么地方的? 书上没写明白,我也搞不清楚.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
playboyxp
2003-08-19
打赏
举报
回复
地址是一样的
只是说法不同
lyr311
2003-08-18
打赏
举报
回复
当然有区别啊,一个是指向行的指针,一个是指向列的指针,我刚刚看到这里时候也搞不懂,往后面看就懂了——>如果你是用的谭浩强的书,两种指针数值上相当,意义不同,不能相互赋值,函数间传递参数时只能同类指针相匹配,否则会出错。
shiningpolarstar
2003-08-18
打赏
举报
回复
*(a+i)是指第i行第0元素的地址,而a+i是指第i行的首地址,这两者地址值相同,可是一个是可变的,一个不可变,或者说一个是"静态变量",一个"动态变量",如果是一维数组的话,a就是数组首地址,它是不可变的,而a+i,当i为零时,二者的值是一样的,可是随着i的变化a+i可以动态的指向数组中的每一个元素。
antijpn
2003-08-18
打赏
举报
回复
数组可以退化成为指针
所以:
假设这个数组存贮int型数据,那么这两个都是指针,但是一个是指向int型数据对象指针,一个是指向int型数据对象指针的指针
表示的话,一个是int *,一个是int **
napoleonpan
2003-08-18
打赏
举报
回复
*(a+i)并没有取值,*(*(a+i)+0)才是*(a+i)所取的值
napoleonpan
2003-08-18
打赏
举报
回复
奶油狗只是说明了取一个数组元素值的方法:a[i][j]=*(a[0]+i*col+j)
如果我说的两者没有太大区别,那总不至于在使用指向二维数组的指针时,a+i和*(a+i)通用吧
书上还说,a+i如果在前面加一个*,那么就由取它的行坐标转向求其列坐标(我的认为就是取小一级)
如果再在前面加一个&,(即&*(a+i))就是由取它的列坐标转向求它的行坐标(我就认为它取大一级)
tonybaobao
2003-08-18
打赏
举报
回复
a+i是第i行的首地址,也就是第i行首个元素的地址,*(a+i)应该是取值了吧!书上有点问题哦。
西江残月
2003-08-18
打赏
举报
回复
int a[10];
首地址a就是&a[0]啊,好像没什么区别吧!有些问题还是不要扣的太死,对吧?
fireseed
2003-08-18
打赏
举报
回复
是线性存储的
a[4][4]的存储方式:
a[0][0]
a[0][1]
a[0][2]
a[0][3]
a[1][0]
a[1][1]
a[1][2]
a[1][3]
a[2][0]
a[2][1]
a[2][2]
a[2][3]
a[3][0]
a[3][1]
a[3][2]
a[3][3]
a[2][3] = a + ( 2 * 4 + 3 )
vsfan
2003-08-18
打赏
举报
回复
至少值应该是一样的,概念么,就说不清了
二维数组
的
首
地址
和数组名
二维数组
a[M][N]的数组名 a 表示的是谁的
地址
? 在一维数组
中
,数组名表示的是数组第一个
元素
的
地址
,那么
二维数组
呢? a表示的是
元素
a[0][0]的
地址
?不是! 我们说过,
二维数组
就是一维数组
二维数组
a[3][4]就有三个
元素
, 所以数组a的第一个
元素
不是a[0][0],而是a[0]的
地址
, 即: a == &a[0]; 而a[0]又是a[0][0]的
地址
,即: a = &...
二维数组
的行
地址
、列
地址
,与
元素
的存储
1、连续存储 2、
二维数组
的行
地址
与列
地址
1)行
地址
1、
二维数组
中
,数组名a的值,是数组a
首
元素
a[0][0]的
地址
,即&a[0][0],第一行第一个
元素
的
地址
; 2、
二维数组
中
,数组名a+1是数组a的
元素
a[1][0]的
地址
,即&a[1][0],第二行第一个
元素
的
地址
; 2)列
地址
1、
二维数组
中
,a[0]的值,即该数组的
首
元素
a[0][0]的
地址
,即&...
二维数组
元素
的
地址
一维数组
元素
的
地址
大家都比较容易理解,但对于
二维数组
,就很容易搞混了.今天我又被这个问题给弄糊涂了,翻了翻老谭的书本,对这个问题有了更深的认识.
首
先给出一个
二维数组
a,它的定义为: int a[3][4] = {{1,3,5,7}, {9,11,13,15}, {17,19,21,23}}; a数组包含3个行
元素
,a[0],a[1],a[2].而每个行
元素
又是一个一
C语言指针指向
二维数组
首
地址
输出,C语言
二维数组
的指针及
首
地址
问题
若arr是一维数组名,我们知道*arr就是arr[0],就是*(arr+0)。因为arr是数组的
首
地址
,*arr就是取
首
地址
所指
元素
,就是数组的第一个
元素
。同样的道理,arr是
二维数组
名时,*arr也是取arr的第一个
元素
,但是此时arr所指的
元素
是一个一维数组,所以,实际上arr所指
元素
是一维数组的
首
地址
。就按arr[3][4]这个例子来看:3行4列数组arr可以理解为arr[0],arr[1]...
C语言总结(一维数组、
二维数组
、字符数组和字符串)
C语言总结第七章、数组一维数组一维数组的定义一维数组的引用一维数组的初始化程序举例
二维数组
及多维数组
二维数组
的定义
二维数组
元素
的引用
二维数组
元素
的初始化程序举例字符数组和字符串字符数组 第七章、数组 数组是构造数据类型之一 数组: 有序数据的集合,用数组名标识
元素
: 属同一数据类型,用数组名和下标确定 一维数组 一维数组的定义 定义方式: 例: int a[6] 一维数组的引用 1、数组...
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章