Tag: 多维数组

malloc-ating函数中的多维数组

我正在尝试在C程序中分配2d数组。 它在这样的主函数中工作正常(如此处所解释): #include #include int main(int argc, char ** argv) { int ** grid; int i, nrows=10, ncols=10; grid = malloc( sizeof(int *) * nrows); if (grid == NULL){ printf(“ERROR: out of memory\n”); return 1; } for (i=0;i<nrows;i++){ grid[i] = malloc( sizeof(int) * ncols); if (grid[i] == NULL){ printf("ERROR: out of memory\n"); return 1; } […]

当二维数组和多维数组作为C语言中的函数参数

可能重复: 如何在C ++中使用数组? 一维数组作为函数参数: #include #include int func(int a[], int n) { int i; for(i = 0; i < n; i++) printf("%d ", a[i][j]); } int main(void) { int a[2] = {1,2}; func(a, 2); } 它编译并正确运行。 但是当二维数组作为函数参数时: #include #include int func(int a[][], int n) { int i, j; for(i = 0; i < n; i++) […]

如何在C / C ++中获取多维数组的列?

int matrix[9][9],*p; p=matrix[0]; 这工作并给出第一行matrix ,但如何得到matrix第一列我试过p=matrix[][0]; ? 另外我不明白为什么下面的代码会出现编译错误? int matrix[9][9],p[9]; // it looks really ugly, byt why it doesn’t work ? p=matrix[0]; // compiler gives “invalid array assigment” 是因为多维数组是数组的数组 – 我们应该将matrix[i][j]为第i个嵌套数组的第j个元素?

为什么在初始化多维数组时我不能完全省略维度?

在Visual Studio 2010中,此初始化按预期工作: char table[2][2] = { {‘a’, ‘b’}, {‘c’, ‘d’} }; 但是写下这样的东西似乎不合法: char table[][] = { {‘a’, ‘b’}, {‘c’, ‘d’} }; Visual Studio抱怨此数组可能不包含’that’类型的元素,并且在编译之后,VS报告两个错误:缺少索引和太多初始化。 问题 :为什么在初始化多维数组时我不能完全省略维度?

如何从函数中返回矩阵(2D数组)? (C)

我创建了一个生成宾果板的function,我想要返回宾果板。 正如我没想到的那样,它不起作用。 这是function: int** generateBoard() { int board[N][M], i, j , fillNum; Boolean exists = True; // initilize seed srand(time(NULL)); // fill up.. for(i = 0; i < N; ++i) { for(j = 0; j < M; ++j) { exists = True; while(exists) { fillNum = rand()%MAX_RANGE + 1; // limit up to MAX_RANGE if(beenAdded(board, […]

Qsort比较function

我是C的初学者,我正在尝试理解qsort函数所需的比较函数。 第一部分:语法 一个简单的建议用法就是这个(我已经包含了一些main()代码来打印结果): #include #include int values[] = { 40, 10, 100, 90, 20, 25, 12, 13, 10, 40 }; int compare(const void *a, const void *b) { const int *ia = (const int *)a; // casting pointer types const int *ib = (const int *)b; return *ia – *ib; } int main() { int […]

int * array 是指向32个int的数组的指针,还是指向int的32个指针的数组? 有关系吗?

如果我写 int *columns[32]; 我是否用32个指向int的指针定义了一个数组? 或者它是一个指向32个int的数组的指针? 我如何区分这两者? 有区别吗?

数组衰减到指针的情况是什么?

我只知道一个例子,当数组传递给一个函数时,它们会衰变成一个指针。任何人都可以详细说明数组衰减到指针的所有情况。

在初始化C / C ++多维数组时省略大小

我对C / C ++编译器的了解是,它们在初始化多维数组时忽略了内部括号。 所以,你不能这样做: int myArray[][] = { { 2, 3 }, { 4, 5 }, { 4, 1 } }; 因为编译器会完全看到它 int myArray[][] = { 2, 3, 4, 5, 4, 1 }; 现在它不知道它是6 * 1,3 * 2,2 * 3,1 * 6,还是其他东西(因为这可能是部分初始化列表,不一定完整)。 我的问题是,为什么这在许多编译器中都有效? int myArray[][2] = { { 2 }, { 4, 5 }, […]

2Darrays与arraysarrays

2D数组和数组数组之间有什么区别? 我读过像@ Dave这样的评论,似乎可以区分这两者。 如果他使用2d数组或指针到数组类型而不是数组数组,则会中断。 – 戴夫 我一直认为这两个都提到: int arr_arr[][]; 编辑: @FutureReader,您可能希望看到如何在C ++中使用数组?