这是一个绝对的noob问题,但我似乎没有在任何地方找到适当的答案,所以在这里,给出这个代码:
#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;
}
Run Code Online (Sandbox Code Playgroud)
main的输出总是'b',这对我来说真的很奇怪.我认为通过传递指针初始化我可以修改在main中声明的指针的值,但由于某种原因它似乎是通过值传递变量,并且在返回时我有在main中指定的值,因此'b' .
我想知道为什么这个...我应该传递对指针的引用吗?像char*&??
问候,亚历克斯
你在功能做的第一件事是重新分配的内存另一个地方buffer用新的malloc.然后你修改这个新的内存位置,但是buff在main函数中没有修改,因为它仍然指向旧的位置.
如果你删除malloc,它将工作:
void initialize( char * buffer) {
*buffer='a';
}
Run Code Online (Sandbox Code Playgroud)
现在我们正在修改初始内存位置.
| 归档时间: |
|
| 查看次数: |
5250 次 |
| 最近记录: |