gpt4 book ai didi

c++ - 我可以逆转数组到指针衰减的过程吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:12:41 26 4
gpt4 key购买 nike

将指向数组第一个元素的指针转换为指向整个数组的指针是否合法?

template<typename T, size_t N>
void whatever(T(&)[N])
{
std::cout << N << '\n';
}

int main()
{
int a[10];
int * p = a;
whatever(*(int(*)[10])(p)); // <-- legal?
}

这会在我的编译器上打印 10,但我不确定 C++ 标准是否允许它。

最佳答案

不,这是不合法的(因为它是未定义的行为)。指向整个数组的指针是 &a 而不是 p。基本上,您是在将一个指针指向另一个指针。该标准描述了所有允许的转换,而这个不在其中。

关于c++ - 我可以逆转数组到指针衰减的过程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8635549/

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