gpt4 book ai didi

c++ - 数组指针的增量

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:27:06 24 4
gpt4 key购买 nike

我试图理解为什么以下 C++ 代码无法编译

int main () {
int a[10];
int (*p)[10] = &a;
int *q = static_cast<int *>(++p);
}

如果不是很明显,我尝试做的是使用指针算法找到指向数组末尾的指针。

到目前为止,我的理解是 p 具有指向十个整数数组的类型指针,表达式 ++p 也是如此。通常,我可以将一个 int 数组分配给一个指向 int 的指针类型的变量,但这在递增的指针 ++p 上失败了。

我第一次尝试不使用 static_cast 但那也没有用。

最佳答案

p has type pointer to array of ten ints

这是正确的。

Normally, I can assign an array of ints to a variable of type pointer to int

这也是正确的。除非,如果你比较你的两个语句,你应该看到明显的区别:p 不是一个整数数组,它是一个指向整数数组的指针。因此,差异。

现在,如果您取消引用指向数组的指针,您的结果将是一个表达式,其类型为数组(松散地说),并且可以衰减为指针:

int *q = static_cast<int *>(*++p);

关于c++ - 数组指针的增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41913397/

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