二维数组的指针

问题描述

我们知道数组的名称实际上是指向它的第一个元素的指针。 例如在二维数组(a [2] [2])中,名称a是指向两个整数的数组的指针。 当我打印使用cout函数时,它显示一个地址,而当我打印a [0]时,它也显示我与a相同的地址,因此我们可以得出a和a [0]相等,它们是指向第一个元素的指针这两个昏暗的阵列。 我的问题是,在此示例中,为什么初始化指向一些int数组的指针是错误的 (int(* p)[2])使用a [0] 即 int (*p) [2] = a[0] // it's wrong.int (*p) [2] = a // it's ok since a and a[0] are the same.

我知道我应该使用&a [0],但是我只是想知道我是否正确理解了,这只是语法问题。

解决方法

这是类型问题。 awk -v str='new-string' 'BEGIN{FS=OFS="/"} {$3 = str} 1' <<< "$s" 是二维的,而"tree": "/a/new-string/b/" 是一维的。因此两者是不兼容的。尽管int (*p)[2]

请考虑需要多次引用(使用a[0])才能获得第一个整数。使用int* p = a[0];的次数是两次

*

但是只有int (*p)[2]cout << **p; // print first integer 一次

int a[2][2]

但是两次将是编译错误

a[0]