c++ - 了解数组和指针之间的关系

标签 c++ arrays pointers implicit-conversion

我最近在阅读 T*T[size] 之间的区别,T 是类型,这让我很好奇,所以我在玩弄它。

int main()
{
    int a[10];
    using int10arrayPtr_t = int(*)[10];
    int10arrayPtr_t acopy = a;
}

在上面的代码中,int10array_t acopy = a;是带有错误信息的

error C2440: 'initializing': 
cannot convert from 'int [10]' to 'int10array_t'

然后编译:

int main()
{
    int a[10];
    using int10arrayPtr_t = int*;
    int10arrayPtr_t acopy = a;
}

类型 int(*)[10] 不是更接近 int a[10]; 的类型而不是 int* 吗?那么为什么它不允许第一种情况呢?

最佳答案

您需要明确地获取地址,例如

int10arrayPtr_t acopy = &a; // acopy is a pointer to array containing 10 ints
//                      ^

第二种情况有效,因为数组可以 decay指向指针,对于 a,它可以隐式转换为 int*,而 acopy 是指向 int 的指针(请注意,它不是指向数组的指针)。

关于c++ - 了解数组和指针之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71660090/

相关文章:

java - 如何通过ussd从手机发送消息到网络服务器?

c++ - 基准测试 math.h 平方根和 Quake 平方根

arrays - Numpy 迭代和追加

c - 双指针的memset操作

c - 了解结构中的指针行为

c++ - 优化构造函数调用次数

c++ - 图像中的颜色还原不起作用

JavaScript:使用工厂函数中的内部原型(prototype)方法从数组返回评级值

ruby-on-rails - 如何从数组构建正则表达式?

C指针查询