【问题标题】:Initializing array with two pointers用两个指针初始化数组
【发布时间】:2013-01-19 12:53:12
【问题描述】:
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[][]?

【问题讨论】:

标签: c arrays


【解决方案1】:

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

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

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

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

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

这三个声明是等价的。

【讨论】:

  • 指针不是数组,但据我所知,它们指向数组的开头。但是,问题 3 仍然存在:P
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-28
相关资源
最近更新 更多