关于二维数组a[i][j]

您所在的位置:网站首页 二维数组的释放是什么 关于二维数组a[i][j]

关于二维数组a[i][j]

2023-08-05 10:52| 来源: 网络整理| 查看: 265

下午学习时遇到了二维数组的相关问题,写此博客记录一下,说不定以后还会用到。

 

对于二维数组来说:

int a[3][4] = { {   1,  4,   5,   8 },               {   9, 19, 20, 18 },       { 17, 20, 35, 23 } };    

一、a[0][0]为第一个元素,那么取地址后&a[0][0]为第一个元素的地址;

二、a[0]为第一行的首地址;

三、二维数组名a的值为首地址;

四、对a解引用后*a为a[0],为第一行的首地址;

故a,a[0],*a,&a[0][0]均相等,为首地址

延伸:

我们知道若 int a=0; int *p=&a; 则输出p得到的是地址,输出p+1得到的是之前的结果再加4,因为int 占4字节;对p加一实际上是在内存中加4字节。

对于二维数组a[3][4]来说:

a+0的值为第一行的首地址,a+1的值为第二行的首地址,a+2的值为第三行的首地址;

*(a+0)为a[0],为第一行的首地址;*(a+1)为a[1],为第二行的首地址;*(a+2)为a[2],为第三行的首地址;

也就是说a+i,*(a+i),a[i]三者的值是相等的(i=0,1,2,3......)

那么用*(*(a+i)+j)就可以找到第i+1行,第j+1列的值(因为i,j是从0开始的,行列是从一开始的)

举例:

int main() { int a[3][4] = { {  1,  3,   5,    7 },                       {  9,  11, 13, 15 },       { 17, 19, 21, 23 } };/* cout



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3