C语言中 二维数组@a[i][j]的地址为什么可以表示成*(a+i)+j难道*(a+i)还表示一个地址的值?求高手详细解
来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/29 06:00:58
C语言中 二维数组@a[i][j]的地址为什么可以表示成*(a+i)+j难道*(a+i)还表示一个地址的值?求高手详细解释
依据《c语言深度剖析》“多维数组与多级指针”章节 原文如下:
以数组下标的方式来访问其中的某个元素:a[i][j].编译器总是将二维数组看成是一个
一维数组,而一维数组的每一个元素又都是一个数组.a[3]这个一维数组的三个元素分别为:
a[0],a[1],a[2].每个元素的大小为 sizeof(a[0]),即 sizof(char)*4.
由此可以计算出 a[0],a[1],a[2]
三个元素的首地址分别为& a[0],& a[0]+ 1*sizof(char)*4,& a[0]+ 2*sizof(char)*4.亦即 a[i]
的首地址为& a[0]+ i*sizof(char)*4.这时候再考虑 a[i]里面的内容.就本例而言,a[i]内有 4
个 char 类型的元素,其每个元素的首地址分别为&a[i],&a[i]+1*sizof(char),
&a[i]+2*sizof(char),&a[i]+3*sizof(char),即 a[i][j]的首地址为&a[i]+j*sizof(char).再把&a[i]
的值用 a 表示,得到 a[i][j]元素的首地址为:a+ i*sizof(char)*4+ j*sizof(char).同样,可以换
算成以指针的形式表示:*(*(a+i)+j).
再问: 能解释一下sizof(char)是什么意思吗? 还有sizeof的意思也解释一下,看到过,但不知道什么意思
再答: sizeof(char)就是取字符类型在内存中占的字节数,和计算机的位数有关,一般都是占一个字节。 “sizof(char)”是误写!! 去百度文库下载《c语言深度剖析》看一下吧,要pdf格式的那种。
以数组下标的方式来访问其中的某个元素:a[i][j].编译器总是将二维数组看成是一个
一维数组,而一维数组的每一个元素又都是一个数组.a[3]这个一维数组的三个元素分别为:
a[0],a[1],a[2].每个元素的大小为 sizeof(a[0]),即 sizof(char)*4.
由此可以计算出 a[0],a[1],a[2]
三个元素的首地址分别为& a[0],& a[0]+ 1*sizof(char)*4,& a[0]+ 2*sizof(char)*4.亦即 a[i]
的首地址为& a[0]+ i*sizof(char)*4.这时候再考虑 a[i]里面的内容.就本例而言,a[i]内有 4
个 char 类型的元素,其每个元素的首地址分别为&a[i],&a[i]+1*sizof(char),
&a[i]+2*sizof(char),&a[i]+3*sizof(char),即 a[i][j]的首地址为&a[i]+j*sizof(char).再把&a[i]
的值用 a 表示,得到 a[i][j]元素的首地址为:a+ i*sizof(char)*4+ j*sizof(char).同样,可以换
算成以指针的形式表示:*(*(a+i)+j).
再问: 能解释一下sizof(char)是什么意思吗? 还有sizeof的意思也解释一下,看到过,但不知道什么意思
再答: sizeof(char)就是取字符类型在内存中占的字节数,和计算机的位数有关,一般都是占一个字节。 “sizof(char)”是误写!! 去百度文库下载《c语言深度剖析》看一下吧,要pdf格式的那种。
C语言中 二维数组@a[i][j]的地址为什么可以表示成*(a+i)+j难道*(a+i)还表示一个地址的值?求高手详细解
在二维数组a[ i ][ j ]中*(a+i)表示第i行的首地址,为什么不是表示第i行首元素呢?
C语言二维数组a[i][j],为什么a[1]和*(a+1)等价啊?*(a+1)为什么会是一个地址?弄糊涂了,
假如a[i][j]表示一个二维数组,那a[i]表示的是什么?是a[i][j]的第i行所有元素吗?
C中 用指针表示一个二维数组中任意的元素 书上写是a【i】【j】=(*p+m*i+j) m是数组的第二维的维数
C语言中二维数组a[i][j]中,a+i=*(a+i)=a[i]=&a[i]是怎么理解的.
二维数组a[10][10]的第i行第i列的值可以表示为*(*a+i*10+j) 这句话 怎么理解
【动态二维数组】 p[i*n+j]为什么表示数组元素的值
将一个二维数组行和列的元素交换这个代码中,b[j][i]=a[i][j]
请问 *(a+i) =i ; 是什么意思? a+i 表示数组元素地址 a+i =i 表示把i的值给a+i这个数组元素,那
C语言计算数组中任一元素a[i][j]在数组中位置的公式
用C语言求7阶矩阵的行列式,求代码…… (矩阵定义在数组a[7][7]中)a[i][j]表示矩阵第i+1行,j+1列元素