gpt4 book ai didi

python - 如何在 C 中创建具有不同列的二维数组?

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

在 Python 中我可以有数据:

lst = [[1,2,3],[2,3],[1,2,3,4]]

然后由 lst[i][j] 访问。

如何在 C 中实现这一点?

最佳答案

您只能通过为数组的每一行动态分配内存并在其他数组中保持每一行的大小来实现相同的目的。例如

int sizes[3] = { 3, 2, 4 };

int **a = malloc( 3 * sizeof( int * ) );

for ( int i = 0; i < 3; i++ )
{
a[i] = malloc( size[i] * sizeof( int ) );
}

请注意,您需要手动初始化每一行。

在 C++ 中,您可以在分配行时对其进行初始化。例如

#include <iostream>

int main()
{
const size_t N = 3;
size_t sizes[3] = { 3, 2, 4 };

int **a = new int * [N];

a[0] = new int[sizes[0]] { 1 ,2, 3 };
a[1] = new int[sizes[1]] { 2, 3 };
a[2] = new int[sizes[2]] { 1, 2, 3, 4 };

for ( size_t i = 0; i < N; i++ )
{
for ( size_t j = 0; j < sizes[i]; j++ ) std::cout << a[i][j] << ' ';
std::cout << std::endl;
}

for ( size_t i = 0; i < N; i++ ) delete [] a[i];
delete [] a;

return 0;
}

尽管使用容器 std::vector 会更好。

输出是

1 2 3 
2 3
1 2 3 4

还要考虑到 C# 中存在这样的数组。:)

关于python - 如何在 C 中创建具有不同列的二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25404048/

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