-4
int arraySum (int array[], int n)  
{  
int sum = 0, *ptr;  
for (ptr = array; ???; ++ptr)  
sum += ???  
return sum;  
}  

int n是数组的大小。

4

3 回答 3

1

由于这似乎是您的家庭作业/作业,我将只给您 2 条提示,让它自己完成:

提示 1
当您有指向int:的指针时,您可以通过使用解引用运算符int* ptr解引用指针来访问int它指向的内容:*ptr

提示 2
当你增加ptr31倍时,它将指向相同的内存ptr + 3。注意ptr + 3指向内存处的地址&ptr[3]

于 2013-02-19T10:09:15.863 回答
0

第一个???应替换为ptr < &array[n],第二个应替换为*ptr

指针是内存中的地址array包含一个地址(array[0] 所在的位置)。

array + i指向的指针也是如此array[i]

您想在数组上移动直到到达最后一个对象,因为我们正在比较for循环中的地址ptr,所以我们与数组中最后一个元素的地址进行比较。所以你的程序看起来:

int arraySum (int array[], int n)  
{  
  int sum = 0, *ptr;  
  for (ptr = array; ptr < &array[n]; ++ptr)  
  sum += *ptr;  
  return sum;  
}  
于 2013-02-19T10:09:55.510 回答
0
int arraySum (int array[], int n)  
{  
  int sum = 0, *ptr;  
  for (ptr = array; ptr - array < n; ++ptr)  
    sum += *ptr;  
  return sum;  
}  
于 2013-02-19T10:13:08.547 回答