I’m trying to write a simple function called `two_d_sum` that takes the sum of each element in a 2 dimentional array and return the sum. But I can’t seem to pass the array itself to the function and the function definition does not treal int[][] as legal C code. Not sure why can someone look please? I can get the code to work if I cast the array as a pointer but I don’t want to do that.
#include <stdio.h>
#define COL 3
int two_d_sum(int, int[][]);
int main(void) {
int twod_array[][COL] = {{1,2,3},{23,44,1},{99,12,30}};
int count = 7;
printf(“The sum of all elements in the 2d array is %d”,
two_d_sum(3, twod_array));
}
int two_d_sum(int row, int arr[][COL]) {
int sum;
for(int i = 0; i < COL; i++)
for(int k = 0; k < row; k++){
sum += arr[i][k];
}
return sum;
}
Expert Answer
Please give the thumbs up, if it is helpful for you. Thank you!! Ask me if you have any doubt.
1st way of doing it: No need to give function definition. Just give your function before main.
#include <stdio.h>
#define COL 3
//int two_d_sum(int, int[][]);
int two_d_sum(int row, int arr[][COL]) {
int sum;
for(int i = 0; i < COL; i++)
for(int k = 0; k < row; k++){
sum += arr[i][k];
}
return sum;
}
int main(void) {
int twod_array[][COL] = {{1,2,3},{23,44,1},{99,12,30}};
int count = 7;
printf(“The sum of all elements in the 2d array is %d”, two_d_sum(3, twod_array));
}

2nd way: You need to pass atleast one index to function prototype.
#include <stdio.h>
#define COL 3
int two_d_sum(int, int[][COL]);
int main(void) {
int twod_array[][COL] = {{1,2,3},{23,44,1},{99,12,30}};
int count = 7;
printf(“The sum of all elements in the 2d array is %d”, two_d_sum(3, twod_array));
}
int two_d_sum(int row, int arr[][COL]) {
int sum;
for(int i = 0; i < COL; i++)
for(int k = 0; k < row; k++){
sum += arr[i][k];
}
return sum;
}
