pointers - C Programming - Sum of 2D arrays -
i trying values of diagonal values 2d array. example..
10 20 30 10 20 30 10 20 30 from codes, adding/summing numbers index[0][0] index1 , index[2][2] using pointers compute 60. however, when build , run, returns computation of memory address instead. can explain problem here? (i'm new c programming , pointers)
void diagonals2d(int array[][size], int rowsize, int colsize, int *sum) { int count; *sum=0; for(count=0;count<size;count++) { (*sum)+=*(array+count+count); } }
the first parameter adjusted to
int ( *array )[size] that is pointer.
so expression array + count has type int ( * )[size]. corresponding "row" of array have dereference pointer
*( array + count ) in case have object of type int[size] in turn in expression
*( array + count ) + count is implicitly convered type int *.
now dereferencing whole expression target element
*( *( array + count ) + count ) it better declare function having parameter of variable length array.
here demonstration program
#include <stdio.h> void diagonals2d( long long int *sum, size_t n, int a[n][n] ) { *sum = 0; ( size_t = 0; < n; i++ ) { *sum += *( *( + ) + ); } } #define n 3 int main(void) { int a[][n] = { { 10, 20, 30 }, { 10, 20, 30 }, { 10, 20, 30 } }; long long int sum; diagonals2d( &sum, n, ); printf( "sum = %lld\n", sum ); return 0; } its output is
sum = 60 
Comments
Post a Comment