`int*[1]` 和 `int(*)[1]` 有什么区别?
What's the differences between `int*[1]` and `int(*)[1]`?
using T1 = int*[1];
using T2 = int(*)[1];
T1 t1;
T2 t2;
t1[0] = 0; // ok
t2[0] = 0; // error : array type 'int [1]' is not assignable
t2 = t1; // error : array type 'int [1]' is not assignable
t2 = &t1; // error : array type 'int [1]' is not assignable
t2 = 0; // ok
为什么 t2[0]
(/t1
) 不可分配?
int*[1]
和int(*)[1]
有什么区别?
更新:
int n[1];
t2 = &n; // ok
int*[1]
为长度为1的数组,其元素为int*
.
int(*)[1]
是一个指针,指向数组int[1]
。因此 t2[0]
是一个数组 int[1]
,它是不可赋值的。
using T1 = int*[1];
using T2 = int(*)[1];
T1 t1;
T2 t2;
t1[0] = 0; // ok
t2[0] = 0; // error : array type 'int [1]' is not assignable
t2 = t1; // error : array type 'int [1]' is not assignable
t2 = &t1; // error : array type 'int [1]' is not assignable
t2 = 0; // ok
为什么 t2[0]
(/t1
) 不可分配?
int*[1]
和int(*)[1]
有什么区别?
更新:
int n[1];
t2 = &n; // ok
int*[1]
为长度为1的数组,其元素为int*
.
int(*)[1]
是一个指针,指向数组int[1]
。因此 t2[0]
是一个数组 int[1]
,它是不可赋值的。