数组指针的增量
increment of pointer to array
我正在尝试理解为什么以下 C++ 代码无法编译
int main () {
int a[10];
int (*p)[10] = &a;
int *q = static_cast<int *>(++p);
}
如果不是很明显,我试图做的是使用指针算法找到指向数组末尾的指针。
到目前为止,我的理解是 p
具有指向十个整数数组的类型指针,表达式 ++p
也是如此。通常,我可以将一个整数数组分配给一个指向 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++ 代码无法编译
int main () {
int a[10];
int (*p)[10] = &a;
int *q = static_cast<int *>(++p);
}
如果不是很明显,我试图做的是使用指针算法找到指向数组末尾的指针。
到目前为止,我的理解是 p
具有指向十个整数数组的类型指针,表达式 ++p
也是如此。通常,我可以将一个整数数组分配给一个指向 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);