3
int main() {
    int **matrix = {
        {1, 3, 2, 4},
        {3, 2, 4, 5},
        {9, 3, 2, 1}
    };

    getchar();
}
  1. 为什么这会显示“标量初始化器周围的大括号”之类的警告?
  2. 为什么我需要用多个指针初始化多维数组?(如果你能给我一些非常容易理解的解释……)
  3. 如果我想使用 int matrix[3][4] 而不是 int **matrix ...如果我想传递这个数组,函数参数是什么?int[][]?
4

1 回答 1

5

int **是指针类型而不是数组类型。指针不是数组。使用类型int [3][4]

您不能将数组传递给函数,但可以将指针传递给数组。将指针传递给数组 4 的函数声明int将是:

void f(int arr[3][4]);

或者

void f(int arr[][4]);

或者

void f(int (*arr)[4]);

这三个声明是等价的。

于 2013-01-19T12:54:00.217 回答