这是我如何分配一个 int var 然后在函数外部访问这个 var
int f1(int ** b) {
*b = malloc(sizeof(int));
**b = 5;
}
int main() {
int * a;
f1(&a);
printf("%d\n", *a);
// keep it clean :
free(a);
return 0;
}
使用上述相同的逻辑,如何在函数内部分配一个 1 dim 数组,然后在 func 外部访问它?
请帮忙,我对数组指针有点困惑。
最佳答案
以完全相同的方式,但有一些不同的算术。你可以把你现在正在做的事情想象成用一个元素分配一个数组。只需乘以 sizeof(int)
根据您希望数组具有的元素数量:
int f1(int ** b, int arrsize) {
*b = malloc(sizeof(int) * arrsize);
// then to assign items:
(*b)[0] = 0;
(*b)[1] = 1;
// etc, or you can do it in a loop
}
int main() {
int * a, i;
int size = 20;
f1(&a, size); // array of 20 ints
for (i = 0; i < size; ++i)
printf("%d\n", a[i]); // a[i] is the same as *(a + i)
// so a[0] is the same as *a
// keep it clean :
free(a);
return 0;
}
关于C - 函数中的 malloc 数组,然后从外部访问数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8437791/