【发布时间】:2016-12-20 17:47:09
【问题描述】:
我的问题是,当你有一个数组tab[a][b][c] 时,你可以使用tab[a] 作为参数array[b][c] 吗?
这是一个例子:
void function(int tab[5][6])
{
tab[4][3]++;
}
int main()
{
int tab[9][5][6];
for (int i=0;i<9;i++)
{
function(tab[i]);
}
return 0;
}
【问题讨论】:
-
MSVC “让我”,但我不知道它是否严格合法。请注意,由于对未初始化数据的操作
tab[4][3]++;,您的使用具有未定义的行为。 -
由于表达式
tab[i]没有将&、sizeof或_Alignof运算符应用于数组,因此表达式被转换为指向数组第一个元素的指针。由于function原型中的int tab[5][6]调整为int (*)[6]类型,实参和参数的类型匹配。 唯一的问题是读取@WeatherVane 提到的未初始化值。
标签: c arrays multidimensional-array