gpt4 book ai didi

c 字符 * 问题

转载 作者:太空狗 更新时间:2023-10-29 15:25:04 24 4
gpt4 key购买 nike

这绝对是一个菜鸟问题,但我似乎在任何地方都找不到合适的答案,所以就在这里,给定这段代码:

#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 *& ??

问候,亚历克斯

最佳答案

您在函数中做的第一件事是使用新的 malloc 将内存中的另一个位置重新分配给 buffer。然后你修改这个新的内存位置,但是 main 函数中的 buff 没有被修改,因为它仍然指向旧位置。

如果您删除 malloc,它将起作用:

void initialize( char * buffer) {
*buffer='a';
}

现在我们正在修改初始内存位置。

关于c 字符 * 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5309245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com