gpt4 book ai didi

C++数组指针

转载 作者:太空狗 更新时间:2023-10-29 20:02:16 27 4
gpt4 key购买 nike

我碰到过这样的C++程序

#include<iostream>
using namespace std;

int main() {
int N = 10;
int M = 2;
int a[] = { 2,1,4,3,6,5,8,7,10,9 };
int(*b)[5] = (int(*)[5]) a;
for (int i = 0; i<M; i++) {
for (int j = 0; j<N / M; j++) {
cout << b[i][j] << endl;
}
}

system("pause");
return 0;
}

以上程序的输出是2,1,4,3,6,5,8,7,10,9。看起来 b 是一个数组点。那么 (int(*)[5]) a 是什么意思呢?谁能帮我解释一下?

最佳答案

a 是一个包含 10 个元素的整数数组:int [10]b 是指向具有 5 个元素的 int 数组的指针:int (*) [5]ba 的值初始化,并使用 C 风格的转换显式转换:(int(*)[5]) a

实际上 a 是一个 1x10 矩阵而 b 是一个 2x5 矩阵,它实际上是 a 的“ reshape ” >b,内容相同。这里“最”危险的事情是 reshape 不执行深拷贝,即,对 b 的更改也会影响 a ,反之亦然;

类型,这里是 int,完全不相关。 Here是一个在线示例,有几种不同的类型。

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

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