这段代码正确吗?由于某种原因,是否不推荐使用二维数组作为一维数组?
char tab1[3][3];
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
tab1[i][j] = (char)i;
printf("%c", ((char*)tab1)[3]); // == tab1[1][0]
由于某种原因,是否不推荐使用二维数组作为一维数组?
当你使用tab1
按照你的方式,它会退化为类型指针char (*)[3]
(指向 3 个数组的指针char
s)。它不会衰减到char*
.
您不能将其用作char*
没有显式地转换它。
回复:这段代码正确吗?
它的定义很好,因为tab1
在你的代码中,&tab1
, &tab1[0]
, and &tab1[0][0]
即使它们都是不同的类型,也指向内存中的同一位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)