gpt4 book ai didi

c - 为什么这个函数(char*)不通过 ref 传递?

转载 作者:太空宇宙 更新时间:2023-11-04 06:10:13 25 4
gpt4 key购买 nike

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void set(char* str){
str = malloc(10);
strcpy(str, "dog");
printf("\nstr = %s", str);

}
int main(){
char* s;
set(s);

printf("\n%s", s);
return 0;
}

这是我要打印的内容:

str = dog
dog

这是实际打印出来的内容:

str = dog
(null)

这是为什么?我想我正在做的是传递一个未初始化的指针,然后在 set() 中为它分配一 block 内存,然后将“dog”写入其中。到底发生了什么?

最佳答案

C 中没有按引用传递。但是指针和间接提供了一种间接模仿它的便利。

在您的例子中,从 main() 发送到 set() 的是变量“s”中的地址。它在执行 malloc() 语句之前将具有该值。之后,str 将具有 malloc() 返回的任何地址。

当在main中期望同样的东西时,应该传递的是地址的's'而不是它持有的地址(如上面的一些例子)。

关于c - 为什么这个函数(char*)不通过 ref 传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58576514/

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