我有这个练习题:
定义一个带有malloc of int的2D不规则数组,其中out dim = 4,inner = 10,11,12,13。 (提示:使用for循环)
所以,我意识到我可以写一个2D不规则数组,其中包含像这样的整数:
int(* array)[20] = malloc((sizeof * array)* 10);
那将是10x20数组,我相信amlloc。
我只是不确定如何使用for循环将内部维度从10更改为11到12到13.任何帮助都将不胜感激!
int j;
for (int k = 0; k < 4; k++ )
{
for ( j = 10; j < 14; j++ )
{
int (*array)[4] = malloc((sizeof *array) * j)
}
}
顺便说一句,那是否接近正确?
答案 0 :(得分:0)
这有帮助吗? 如果是,请修改http://en.wikibooks.org/wiki/C_Programming/Common_practices#Dynamic_multidimensional_arrays,以便下一位学生更容易理解。
#include <stdio.h>
#include <stdlib.h>
const int rows = 20;
int main(void) {
int **some_data;
// first, allocate a (column) Iliffe vector.
some_data = malloc( (sizeof(*some_data)) * rows);
int i=0;
for(i = 0; i < rows; i++){
// next, allocate each row.
// For no good reason, make each row a different size.
int columns = i+10;
some_data[i] = malloc( (sizeof(**some_data)) * columns);
};
some_data[3][13] = 9;
printf( "%d\n", some_data[3][13]);
return 0;
}
如果您通过其中一个现在似乎非常受欢迎的锁定系统查看此内容,您可能会发现在某些在线C编译器中运行上述代码非常方便,例如http://ideone.com/或{{3 }或http://codepad.org/。