我正在学习C中的内存分配。我想使用malloc
创建[10] [20]的矩阵,以便将每一行发送到要处理的函数。仅发送每行的指针是否足够?即*arr[0]
;
以下是我的一大块代码:
#include <stdio.h>
#include <stdlib.h>
int **arr; // Buffer
int sumElements(int *arr[]){
// do something
}
void main(){
int i,j;
arr = malloc(10 * sizeof(int *)); // Allocate # of rows for the matrix
for(i = 0; i < 10; i++){
arr[j]= malloc(20 * sizeof(int)); // Allocate # of entries in each row
sumElements(*arr[j]); // send the current row to be processed by function
}
}
答案 0 :(得分:4)
当前行不是*arr[j]
,而是arr[j]
。前者属于int
,后者属于int *
。因此sumElements
应该传递int []
或int *
,而不是int *[]
。
所以函数定义应该是:
int sumElements(int arr[])
你应该这样称呼它:
sumElements(arr[j]);