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. 声明指针数组字符数组
- 2. 指针和多维数组
- 3. java多维数组声明1 * 3维?
- 4. 如何声明指向int数组的指针数组?
- 5. 与数组指针的联合声明?
- 6. 排序多维数组无指针
- 7. 阵列指针到多维数组
- 8. 初始化多维数组指针****
- 9. Java多维数组。空指针
- 10. 多维数组和C++中的指针?
- 11. 混淆指针和多维数组
- 12. 二维数组指针
- 13. 二维数组和指针
- 14. 指针的二维数组
- 15. 指针二维数组
- 16. 指针二维数组
- 17. 在C++中声明指向二维数组的内部二维数组的指针
- 18. 多维数组和指向指针的指针
- 19. 声明在一个声明多维数组
- 20. K&R练习:将多维数组插入指针数组
- 21. 声明,分配和分配指向函数指针的指针数组
- 22. 声明多维数组的值true或false
- 23. 回声多维数组
- 24. 在传递函数时使用多指针数组中的指针或声明的警告
- 25. 指向一维数组的双指针
- 26. 如何声明指向另一个数组元素的指针数组
- 27. 唔明多维数组
- 28. 将指针或指针数组存储在动态数组中
- 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