本人c语言刚入门,理解不深,最近在学地址时有一个奇怪的想法:如果二维数组a[i][j]中j足够大的话,是不是会使a[i][j]的地址==a[i+1]呢(学的不好才会出现的奇怪想法)
于是我进行了如下测试:
首先,以最简单的int数组为例,一维数组的每相隔两位的地址差为4;
倘若二维数组为int a[2][1],其每相隔的两位(如a[0] a[1])地址差为4;
倘若二维数组为int a[2][2],其每相隔的两位(如a[0] a[1])地址差为8;
倘若二维数组为int a[2][3],其每相隔的两位(如a[0] a[1])地址差为12;
倘若二维数组为int a[3][3],其每相隔的两位(如a[0] a[1])地址差为12;
倘若二维数组为int a[4][3],其每相隔的两位(如a[0] a[1])地址差为12;
研究以上数据,易得若数组为int a[n][m],其相隔两位地址差(a[0] a[1]),地址差与m有关,与n无关,且大小为m*4;
若有三维数组int a[n][m][o],则a[n][0]和a[n][1]的地址差为o*4;
而4刚好就是int的字节数,易知double、float······亦有此规律
但是,我用char数组验证这个问题时,又产生了新的问题,如图
没有输出?这是为什么呢?希望有大佬来解答一下