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:
当你增加ptr
31
倍时,它将指向相同的内存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;
}