Passing multidimensional arrays to functions

Thursday, November 13, 2014
/* 1606.c: Passing multidimensional arrays to functions */
#include <stdio.h>
/* function declarations */
int DataAdd1(int list[][5], int max1, int max2);
int DataAdd2(int *list, int max1, int max2);
/* main() function */
main()
{
    int list[2][5] = {1, 2, 3, 4, 5,5, 4, 3, 2, 1};
    int *ptr_int;

    printf("The sum returned by DataAdd1(): %d\n",
    DataAdd1(list, 2, 5));
    ptr_int = &list[0][0];
    printf("The sum returned by DataAdd2(): %d\n",
    DataAdd2(ptr_int, 2, 5));

    return 0;
}
/* function definition */
int DataAdd1(int list[][5], int max1, int max2)
{
    int i, j;
    int sum = 0;

    for (i=0; i<max1; i++)
    for (j=0; j<max2; j++)
    sum += list[i][j];
    return sum;
}
/* function definition */
int DataAdd2(int *list, int max1, int max2)
{
    int i, j;
    int sum = 0;

    for (i=0; i<max1; i++){
        for (j=0; j<max2; j++){
            sum += *(list + i*max2 + j);
            //printf("%d,%d,%d,%d,%d,%d\n",*list,i,max2,j,*list + i*max2 + j,sum);}
            //printf("------------------\n");
            }
    }
    return sum;
}

Copyright @ 2015 Tron!

Labels