我正在尝试在函数内分配和初始化数组,但我似乎无法在返回后获取值。
这是我最后一次几乎成功的尝试
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int func(int **thing);
int main() {
int *thing;
func(&thing);
printf("%d %d", thing[0], thing[1]);
}
int func(int **thing) {
*thing = calloc(2, sizeof(int));
*thing[0] = 1;
*thing[1] = 2;
printf("func - %d %d \n", *thing[0], *thing[1]);
}
但函数外打印的值是 1 和 0。 那里有很多关于指针的文档,但我还没有找到这个特定的案例。关于我做错了什么的任何提示?
最佳答案
与传递指针到指针相比,您可能会发现从函数返回新分配的数组更容易:
int *func();
int main() {
int *thing;
thing = func();
printf("%d %d", thing[0], thing[1]);
}
int *func() {
int *thing;
thing = calloc(2, sizeof(int));
thing[0] = 1;
thing[1] = 2;
printf("func - %d %d \n", thing[0], thing[1]);
return thing;
}
您的代码不起作用的原因是:
*thing[0]
由于运算符的优先级,你应该使用:
(*thing)[0]
关于c - 在c函数中分配一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4179273/