我正在努力解决我的代码中的特定部分,我似乎格式错误。这段代码来自我的编程书,空白的部分周围有一个'$'。但是,有两个我似乎无法弄清楚的空白。我目前的代码是:
int sum_two_dimensional(const int a[][LEN], int n)
{
int i,j, sum = 0;
for(i=0, i<n; i++)
for(j = 0; j< LEN; j++)
sum+=a[i][j];
return sum;
}
int sum_two_dimensional_array(const in a[][LEN], int n)
{
int *p, sum = 0;
for(p= a[0]; p < a[0] ______; p++)
sum += ________; //my guess is a[p][sum];
return sum;
}
我在这些空白中尝试了几件事,似乎我一直在犯错误。我不完全理解数组/指针的情况。我填的空白,(包裹在$$$),我觉得是对的,但请随意仔细检查我。我感谢任何帮助。
答案 0 :(得分:1)
这利用了一个事实:数组a[N][M]
使用与单维数组相同的内存a[N*M]
所以你可以“安全地”迭代a[0]
“越界”而不会触发内存异常,直到索引a[0][N*M-1]
int sum_two_dimensional_array( int a[][LEN], int n)
{
int *p, sum = 0;
for(p= a[0]; p < a[0]+n*LEN; p++)
sum += *p;
return sum;
}