当我使用gcc和编译以下代码时g++,g++给出错误而不是gcc.请注意,代码将转换int (*)[4]为int (*)[](指向不完整数组类型的指针).
int arr[4];
int (*p_arr)[] = &arr;
Run Code Online (Sandbox Code Playgroud)
如不完整数组类型中所述?,C语言允许这种转换.但为什么C++不允许这样做并给出错误error: cannot convert ‘int (*)[4]’ to ‘int (*)[]’ in assignment.我知道C++比C更安全类型,但是这个赋值实际上是类型不安全的,因为指针的后来引用(例如sizeof(*p_arr))无论如何都会产生错误C吗?