gpt4 book ai didi

c++ - 二维指针初始化

转载 作者:太空宇宙 更新时间:2023-11-04 05:30:47 25 4
gpt4 key购买 nike

如何用指针初始化二维数组。

int *mapTable[] = { {1,10} , {2,20} , {3,30} , {4,40} };  // It's giving error

此处 int *mapTable 出现错误。

我怎样才能正确声明它们?

最佳答案

int *mapTable[] 不是二维数组:它是一维指针数组。

但随后您使用二维数组初始化器 { {1,10} , {2,20} , {3,30} , {4,40} }

这就是它“给出错误”的原因。


二维数组方式

尝试:

int mapTable[][2] = { {1,10} , {2,20} , {3,30} , {4,40} };

是的,您确实需要指定第二个维度的大小。


一维指针数组方式

这有点复杂,通常太复杂而不值得。

它通常还需要动态分配,导致对象生命周期一团糟:

int *mapTable[] = { new int[2], new int[2], new int[2], new int[2] };

int main() {
mapTable[0][0] = 1; mapTable[0][1] = 10;
mapTable[1][0] = 2; mapTable[1][1] = 20;
mapTable[2][0] = 3; mapTable[2][1] = 30;
mapTable[3][0] = 4; mapTable[3][1] = 40;

// then, at the end of your program:
for (size_t i = 0; i < 4; i++)
delete[] mapTable[i];
}

如您所见,这并不理想。

你可以避免动态分配:

int mapTable0[] = {1,10};
int mapTable1[] = {2,20};
int mapTable2[] = {3,30};
int mapTable3[] = {4,40};
int *mapTable[] = { &mapTable0[0], &mapTable1[0], &mapTable2[0], &mapTable3[0] };

但我不确定您为什么要走这条路。

关于c++ - 二维指针初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6465597/

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