依据《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格式的那种。
本回答被提问者采纳