将指针数组传递给函数 C

Passing array of pointers to a function C

我正在将一个指针数组传递给一个函数并修改它们,但它们发生了意外变化。 这是我的主要功能:

#include <stdlib.h>
#include <stdio.h>
typedef struct {
   int x;
   int y; 
}enemy;

void main() {
  enemy* array[5];
  function(array);
}

这个函数不起作用:

void function(enemy* arr[]){
   int b;
   for(b=0;b<5;b++)
      arr[b]=(enemy*)malloc(sizeof(enemy));
  for(b=0;b<5;b++){
      arr[b]->x=b;
      arr[b]->y=b*16;
      printf("%d %d, ", arr[0]->x, arr[0]->y);
  }
}

每次我调用printf数组的第一个指针改变它的值,我不知道为什么。

printf 打印:“0 0、1 16、2 32、3 48、4 64”。它不应该一直打印“0 0”吗?这正是我所期望的。

以下是我用来测试的你的代码版本:

#include <stdlib.h>
#include <stdio.h>
typedef struct
{
   int x;
   int y;
}enemy;

void function(enemy* arr[]);

int main( void )
{
  enemy* array[5];
  function(array);
}

void function(enemy* arr[])
{
   int b;
   for(b=0;b<5;b++)
      arr[b]=(enemy*)malloc(sizeof(enemy));
  for(b=0;b<5;b++){
      arr[b]->x=b;
      arr[b]->y=b*16;
      printf("%d %d, ", arr[0]->x, arr[0]->y);
  }
}

注意:最后的 printf() 总是输出数组中的第一个条目

结果是:

0 0, 0 0, 0 0, 0 0, 0 0, 

我改变了什么?

1) corrected the return type from main()
2) prototyped the `function()` function.

次调用函数?你是说你调用了不止一次?

如果是这样,函数将在每次调用时替换 arr 中的所有指针。将 malloc 循环移动到 main,然后根据需要调用函数