gpt4 book ai didi

c - 需要了解C中的一些指针

转载 作者:行者123 更新时间:2023-11-30 20:02:49 25 4
gpt4 key购买 nike

嗯,我有一个我们必须在学校使用的简单示例,但我不明白为什么我们必须使用指针以及它们在相同情况下到底做了什么。

   int **create(int lines, int columns)
{
int **p, i;
p = (int **) malloc(lines * sizeof(int *));
for(i = 0; i < lines; i++)
p[i] = (int *) malloc(columns * sizeof(int));
return p;
}

我在谷歌上搜索到 ** 是指向指针的指针。简单地指向已存储变量地址的指针。但为什么我应该这样做呢?然后这两行代码看起来有完全随机的指针

p = (int **) malloc(lines * sizeof(int *));
p[i] = (int *) malloc(columns * sizeof(int));

基本上我明白指针指向变量或其他东西的地址,但不知道这里发生了什么。请有人向我解释一下。感谢您抽出时间。

最佳答案

指针也可以理解为数组。您可以使用 malloc 分配一些空间,并且可以使用 [] 运算符设置项目,就像数组一样。

int* arr = (int*)malloc(sizeof(int)*3);
arr[1] = 5;
printf("%d", arr[1]); //output is 5

指向指针的指针可以理解为二维数组:为指针分配空间,然后将每个指针分配为一个数组。

int** arr = (int**)malloc(sizeof(int*) * 3);
for (int i = 0; i < 3; i++) {
arr[i] = (int*)malloc(sizeof(int) * 3); // each element is going to be an array of 3 integers
}
arr[2][2] = 4;
printf("%d", arr[2][2]); // 4

关于c - 需要了解C中的一些指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59333563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com