我正在尝试在函数内分配和初始化数组,但返回后似乎无法获取值。
这是我最后一次几乎可行的尝试
#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]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)