所以在主程序中我初始化了一个数组,并将数组的指针传递给函数。 在该函数中,我在一定时间内访问相同的 for 循环。 例如假设我们有一个数组,一个需要特定数字的函数必须在该数组中找到 0(并将其更改为 1),并返回这些索引的总和,但该函数也会更改该数组。 那么如何才能让for循环中的指针始终从数组的开头(array[0])开始呢??
int function(int *pointer){
int count = 3, sum = 0;
//changes the array, now only few places (but greater than 3) have 0
while(count != 0){
for(int i = 0; i < 10; i++){
if(*(pointer + i) == 0){
sum+=i;
*(pointer + i) = 1;
}
}
}
return sum;
}
int main(void){
int array[10] = {0};
int sum = function(array);
printf("%d", sum);
return 0;
}
是的,使用该函数来实现这一点非常重要。
我尝试添加另一个变量来保留数组开头的内存地址 就像 int temp = 指针,然后在 for 循环之后放置指针 = temp,但如果 counter 为 3 或更大,则失败。另外,我尝试记住它找到零的索引,并继续使用 for(int i = index; i < 10; i++) (ofc put at the beginning index = 0), still fails to accurately found the 0
您可以使用括号索引,就像“一些程序员家伙”提到的那样,这不需要更改指针。因此,无需重新分配指针,只需使用
p[i]
。
我也有点困惑,因为你从不修改指针,所以它总是指向数组的开头。
此外,您还有一个无限循环,如
count=3
并且永远不会被修改。所以 count!=0
始终为真。