2015-09-09 3 views
1

Я изучаю выделение памяти в C. Я хочу создать матрицу из [10] [20] с использованием malloc, так что каждая строка отправляется в функцию, подлежащую обработке , Достаточно ли послать только указатель каждой строки? т.е. *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 
     } 

} 

ответ

4

Текущая строка не *arr[j], но arr[j]. Первый имеет тип int, а последний имеет тип int *. Таким образом, sumElements следует передать int [] или int *, а не int *[].

Поэтому определение функции должно быть:

int sumElements(int arr[]) 

И вы должны называть это так:

sumElements(arr[j]); 
+0

О! в этом есть смысл. THANK YOU –

+0

Выполняет ли sumElements (arr [j]) все 20 столбцов? –

+1

@ LM Рад, что я мог бы помочь. Не стесняйтесь [принять этот ответ] (http://stackoverflow.com/help/accepted-answer), если вы сочтете это полезным. – dbush

Смежные вопросы