int arraySum (int array[], int n)
{
int sum = 0, *ptr;
for (ptr = array; ???; ++ptr)
sum += ???
return sum;
}
int n是数组的大小。
由于这似乎是您的家庭作业/作业,我将只给您 2 条提示,让它自己完成:
提示 1:
当您有指向int:的指针时,您可以通过使用解引用运算符int* ptr解引用指针来访问int它指向的内容:*ptr
提示 2:
当你增加ptr31倍时,它将指向相同的内存ptr + 3。注意ptr + 3指向内存处的地址&ptr[3]。
第一个???应替换为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;
}
int arraySum (int array[], int n)
{
int sum = 0, *ptr;
for (ptr = array; ptr - array < n; ++ptr)
sum += *ptr;
return sum;
}