导读 大家好,我是小科,我来为大家解答以上问题。c语言二维数组元素在内存中的存放顺序,c语言二维数组很多人还不知道,现在让我们一起来看看吧...
大家好,我是小科,我来为大家解答以上问题。c语言二维数组元素在内存中的存放顺序,c语言二维数组很多人还不知道,现在让我们一起来看看吧!
1、auto int a[8][8];
2、那么a[2]就相当于一个一维数组名,那么a[2]的数值等于&a[2][0]是没什么疑问的
3、数组名本身代表数组的首地址,那&a[2]是怎么回事呢,早期的c编译器会认为这是非法的,但是从语义上讲,对一个数组对象取地址没什么不合理的,于是C99开始允许对数组名取地址,相当于把该数组维数提升了1级,在这个例子里a[2]的类型是int*, &a[2]的类型是int(*)[8];,就是说a[2]和&a[2]数值上是相同的,但含义不同,&a[2]的类型和a相同的(提升了一级)
本文到此讲解完毕了,希望对大家有帮助。