【发布时间】:2011-03-15 08:39:26
【问题描述】:
这是一个绝对菜鸟问题,但我似乎在任何地方都找不到合适的答案,所以在这里,给出这个代码:
#include <stdio.h>
#include <stdlib.h>
void initialize( char * buffer)
{
buffer = malloc(1);
*buffer='a';
}
int main(void) {
char * buff;
buff = malloc(sizeof(char));
*buff = 'b';
initialize(buff);
puts("Contents of buffer are: ");
puts(buff);
return 0;
}
main 的输出总是'b',这对我来说真的很奇怪。我认为通过传递一个指针来初始化我可以修改在main中声明的指针的值,但由于某种原因,它似乎是按值传递变量,并且在返回时我有main中指定的值,因此是'b' .
我想知道这是为什么...我应该传递对指针的引用吗?类似 char *& ??
问候, 亚历克斯
【问题讨论】:
-
当您已经分配到
main中的同一个指针但还没有释放它时,为什么还要在initialize中调用malloc? -
仅用于测试目的...试图了解内存分配在 c 中的工作原理:D