请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

InitPointer 函数**ptr不太理解

void InitPointer(int **ptr, int length, int default_value) {
  *ptr = malloc(sizeof(int) * length);
  for (int i = 0; i < length; ++i) {
    (*ptr)[i] = default_value;
  }
}

int main() {
  int * players;
  //InitPointer(&players, PLAYER_COUNT, 0);
  players = calloc(PLAYER_COUNT, sizeof(int));
  for (int i = 0; i < PLAYER_COUNT; ++i) {
    PRINT_INT(players[i]);
    players[i] = i;
  }
  PRINT_INT_ARRAY(players, PLAYER_COUNT);

  players = realloc(players, PLAYER_COUNT * 2 * sizeof(int));
  PRINT_INT_ARRAY(players, PLAYER_COUNT * 2);

  if (players) {

    free(players);
  } else {

  }


  return 0;
}

老师 我有点笨,不太理这个**ptr 这个指针的指针最后指向哪里了?谢谢

正在回答 回答被采纳积分+3

插入代码

1回答

bennyhuo 2022-08-14 21:59:12

 int * players;  InitPointer(&players, PLAYER_COUNT, 0);

注意看这两句,定义了一个 players 是一个指针,它本身也是一个变量,我们拿到它的地址,传给 InitPointer,这样在 InitPointer 里面,第一个参数也就是 **ptr 实际上指向的是 player 这个变量,我们通过 *ptr = ...  来修改 player 的值,这样实现对 player 的初始化。
0 回复 有任何疑惑可以回复我~
  • 提问者 Jonnyshao #1
    老师 我的理解&players传过来的就是内存地址吧,为什么还要**ptr,直接ptr接收不就可以了吗
    回复 有任何疑惑可以回复我~ 2022-08-14 22:02:27
  • int ** 是&player的类型啊
    回复 有任何疑惑可以回复我~ 2022-08-14 23:33:46

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信