如何在C中使用指针算法代替数组下标来完成函数?
我正在努力处理我的代码中的某些部分,这些部分的格式似乎是错误的。这段代码取自我的编程书,空白部分周围有一个“$”符号。然而,有两个空白我似乎无法理解。我目前的代码是:如何在C中使用指针算法代替数组下标来完成函数?,c,arrays,pointers,C,Arrays,Pointers,我正在努力处理我的代码中的某些部分,这些部分的格式似乎是错误的。这段代码取自我的编程书,空白部分周围有一个“$”符号。然而,有两个空白我似乎无法理解。我目前的代码是: 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(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;
}
intsum\u二维(常数inta[][LEN],intn)
{
int i,j,和=0;
对于(i=0,i这利用了一个事实,即数组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;
}
int和二维数组(int a[][LEN],int n)
{
int*p,和=0;
对于(p=a[0];p
知道它是哪本书真的很有用。@Troy C programming,一种现代的方法。版本2
中的是什么?…标题说你想重写一个函数,但问题是你想知道在空白处放什么。这是哪本书?@CodeFreak你首先需要了解使用指针在一维数组上迭代。我建议您先阅读相关资料。一旦您了解了这一点,这将是除此之外的一小步。(*p
在这两种情况下都是相同的,只是指定了与二维阵列略有不同的结束条件)