1
A
回答
1
这两个可能被用来声明2维数组。
在第一种情况下,25个int元素被分配在内存中的连续区域中。 在这种情况下,表达式a[i][j]
被编译器翻译为*(a + i*5 + j)
。
第二个分配5个指针到int
。您可以通过分配int
的向量并使这些指针指向这些向量来使其作为二维数组工作。 在这种情况下,a[i][j]
表示获得指向a[i]
指向的指针,然后查找该向量中的第5个元素。即a[i][j]
被翻译为*(a[i] + j)
。
请注意,在第二种情况下,行不必具有相同的长度。
0
- 第一个声明二维数组(数组数组)。
- 第二个声明指向可用作多维数组的int的指针数组。
0
int a[5][5];
说,编译器应该分配足够的内存来存储25个整数,并把它当作一个二维数组称为a
。
int* a[5];
表示编译器应该分配足够的内存来存储指向整数的5个指针,并将其视为指向数组的指针a
。要实际使用它作为一个二维数组,你将不得不分配更多的内存并初始化这些指针来指向它。例如:
int * a[5];
for(int i = 0; i < 5; i++){ a[i] = malloc(sizeof(int) * 5); }
不知道您的要求,很难说哪一个更适合您。第二个允许你有效地交换两行,通常更灵活,但需要更多的代码来分配和释放数据结构。
0
哪个更好的苹果或橙子? 此符号int a[ROWS][COLS]
用于创建尺寸在声明时已知的矩形2D阵列。
1 2 3 4
4 6
7 1 1 1 5 6 7
9
相关问题
- 1. C++指针数组声明
- 2. 数组指针声明
- 3. 声明指针数组字符数组
- 4. 声明多维数组
- 5. 指针多维数组中
- 6. 指针和多维数组
- 7. 多维数组指针
- 8. 指针和多维数组
- 9. 如何用typedef和指针声明多维数组
- 10. java多维数组声明1 * 3维?
- 11. 如何声明指向int数组的指针数组?
- 12. 与数组指针的联合声明?
- 13. 使用双指针声明2D数组
- 14. 声明一个动态数组指针
- 15. 声明连续的二维数组指针
- 16. Objective-C声明一个多维数组
- 17. [爪哇]环内声明多维数组
- 18. 填充已声明的多维数组
- 19. C++ - 多维数组中的指针
- 20. 混淆指针和多维数组
- 21. 初始化多维数组指针****
- 22. 通过指针访问多维数组
- 23. 排序多维数组无指针
- 24. Java多维数组。空指针
- 25. 试图使用多维数组指针
- 26. C++传递指针多维数组
- 27. 阵列指针到多维数组
- 28. 多维数组和C++中的指针?
- 29. 指针二维数组
- 30. 二维数组和指针
: 而当列的数目是未知的,在2D阵列声明时间或列的数目可以在运行时改变或仅仅一个想要创建非矩形(锯齿状)阵列这样这个
int * a[ROWS]
符号用于你可能会发现http://cdecl.org/用于'解码'复杂的C声明。 – nimrodm[Is int * array \ [32 \]指向32个int的数组或指向int的32个指针的数组的可能重复?这是否重要?](http://stackoverflow.com/questions/1371898/is-int-array32-a-pointer-to-an-array-of-32-ints-or-an-array-of-32-指针-t) –
相关问题:http://stackoverflow.com/q/7586702/51831 – jpalecek