问题描述
我们知道数组的名称实际上是指向它的第一个元素的指针。
例如在二维数组(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]