【发布时间】:2011-10-27 14:55:27
【问题描述】:
大家好,
请考虑一下这个小代码,并帮助我弄清楚为什么它不起作用?
#include <stdio.h>
#include <stdlib.h>
void setup(int* helo) {
helo = (int*) malloc(sizeof(int));
(*helo) = 8;
}
int main(int argc, char* argv[]) {
int* helo = NULL;
setup(helo);
printf("Value: %s \n", (*helo));
getchar();
return 0;
}
【问题讨论】:
-
问题是,当我尝试阅读“helo”时,它仍然是 NULL
-
你不是基本上将“null”传递给设置吗?设置完成后,您为 int 分配新内存 - 但该地址如何与调用者通信?
-
它应该自动完成...
-
怎么样? helo 是一个空指针,它没有指向任何地方。您将该空指针传递给 setup,然后将该指针的地址更改为新分配的一块内存。您将那块内存设置为 8。 main 中的 int* 仍然指向 null .. 您想要的是将指针传递给指针,然后初始化 /that/
标签: function pointers parameters reference ansi