gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 00:51:31 24 4
gpt4 key购买 nike

我最近在阅读 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com