2024-04-26 09:33:26 发布
网友
在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。你知道吗
std::vector
输出为
1 2 3 2 3 1 2 3 4
还要考虑到C#中存在这样的数组:)
#include <stdio.h> int main(void){ int *array[] = { (int []){1,2,3}, (int []){2,3}, (int []){1,2,3,4} }; int a_len[] = {3,2,4}; int i,j; for(i=0;i<sizeof(a_len)/sizeof(*a_len);++i){ for(j=0;j<a_len[i]; ++j){ printf("%d ", array[i][j]); } printf("\n"); } return 0; }
这应该对你有帮助。你知道吗
int lst[][4]={{1, 2, 3}, {2, 3}, {1, 2, 3, 4}};
只有为数组的每一行动态分配内存并保持其他数组中每一行的大小,才能做到这一点。 例如
考虑到您需要手动初始化每一行。你知道吗
C++中,可以在分配行时初始化行。例如
不过最好是使用容器
std::vector
。你知道吗输出为
还要考虑到C#中存在这样的数组:)
这应该对你有帮助。你知道吗
相关问题 更多 >
编程相关推荐