相关疑难解决方法(0)

C和C++之间不完整数组指针转换规则的差异

当我使用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吗?

c c++ arrays pointers g++

5
推荐指数
1
解决办法
151
查看次数

标签 统计

arrays ×1

c ×1

c++ ×1

g++ ×1

pointers ×1