Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中使用指针算法代替数组下标来完成函数?_C_Arrays_Pointers - Fatal编程技术网

如何在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
在这两种情况下都是相同的,只是指定了与二维阵列略有不同的结束条件)