如何让数组的指针每次进入for循环时都指向数组的开头?

问题描述 投票:0回答:1

所以在主程序中我初始化了一个数组,并将数组的指针传递给函数。 在该函数中,我在一定时间内访问相同的 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

c function for-loop pointers
1个回答
0
投票

您可以使用括号索引,就像“一些程序员家伙”提到的那样,这不需要更改指针。因此,无需重新分配指针,只需使用

p[i]

我也有点困惑,因为你从不修改指针,所以它总是指向数组的开头。

此外,您还有一个无限循环,如

count=3
并且永远不会被修改。所以
count!=0
始终为真。

© www.soinside.com 2019 - 2024. All rights reserved.