|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
void func(int b[][3]);
void func(int b[][3])
{
printf("%d\n", b[2][2]);
}
int main(void)
{
int a[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
func(a);
return 0;
}
怎么就输出了9???求大神详解
二维数组
- int a[3][4] = {
- {1, 2, 3, 4},
- {5, 6, 7, 8},
- {9, 10, 11, 12}
- };
复制代码
在内存中是连续存放的,与以下一维数组存储方式完全一样:
- int a[] = {
- {1, 2, 3, 4, \
- {5, 6, 7, 8, \
- {9, 10, 11, 12 \
- };
复制代码
同样的道理,在函数 func() 中,如果把 a 视为末维为 3 的二维数组 b,则 b[ 2][ 2] 应当对应于 a[3 * 2 + 2] = a[8] = 9
|
|