这绝对是一个菜鸟问题,但我似乎在任何地方都找不到合适的答案,所以这里给出了以下代码:
#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 *& ??
问候,
亚历克斯
您在函数中做的第一件事是将内存中的另一个位置重新分配给buffer
与一个新的malloc
。然后你修改这个新的内存位置,但是buff
主函数中的 未修改,因为它仍然指向旧位置。
如果删除 malloc,它将起作用:
void initialize( char * buffer) {
*buffer='a';
}
现在我们正在修改初始内存位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)