将矩阵的每一行的指针发送到函数

时间:2015-09-09 18:53:49

标签: c arrays

我正在学习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
        }

}

1 个答案:

答案 0 :(得分:4)

当前行不是*arr[j],而是arr[j]。前者属于int,后者属于int *。因此sumElements应该传递int []int *,而不是int *[]

所以函数定义应该是:

int sumElements(int arr[])

你应该这样称呼它:

sumElements(arr[j]);