InitPointer 函数**ptr不太理解
来源:7-7 动态内存分配【突破面试高频考点】

Jonnyshao
2022-08-14
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
这个指针的指针最后指向哪里了?谢谢
写回答
1回答
-
bennyhuo
2022-08-14
int * players; InitPointer(&players, PLAYER_COUNT, 0);
注意看这两句,定义了一个 players 是一个指针,它本身也是一个变量,我们拿到它的地址,传给 InitPointer,这样在 InitPointer 里面,第一个参数也就是 **ptr 实际上指向的是 player 这个变量,我们通过 *ptr = ... 来修改 player 的值,这样实现对 player 的初始化。022022-08-14
相似问题