Just out of idle curiosity I just tested it. Pretty much as I thought. You see, if you have a two dimensional array like test[2][4], then this...
test[1]
will represent the address of the second row. So yes, you can define a function taking a one dimensional array as a parameter (plus a count integer), and have it operate on any row which you pass to it from a two dimensional array. And I'm sure this is a general case true with arrays of higher dimension. I got it working in my test code anyway. Try this...
(piles of warnings you'll have to clean up, unfortunately)
#include <stdio.h>
int Sum1(int iArr[], int n)
{
int iTot=0;
for(int i=0;i<n;i++)
iTot=iTot+iArr[i];
return iTot;
}
int Sum(int* pInt, int n)
{
int iTot=0;
for(int i=0;i<n;i++)
iTot=iTot+pInt[i];
return iTot;
}
int main(void)
{
int i,j;
int test[2][4] = {{1,2,3,4},{5,6,7,8}};
printf("Sum=%d\n\n",Sum(&test[1][0],4));
for(i=0;i<2;i++)
for(j=0;j<4;j++)
printf("%u\t\t%d\n",&test[i][j],test[i][j]);
printf("\n");
printf("%u\n",test[1]);
printf("Sum1=%u\n",Sum1(test[1],4));
return 0;
}