gpt4 book ai didi

c - 通过引用修改结构与其他指针之间的区别

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

我想知道为什么结构指针的行为似乎与 char 指针不同。

typedef struct person_struct {
char *name;
} person;

changeStructName(person * name1)
{
name1->name = "Robert";
}

changeCharName(char * name2)
{
name2 = "Jose";
}

int main()
{
person * name1;
char * name2;

name1 = malloc(1 * sizeof(person));
changeStructName(name1);
changeCharName(name2);

printf("First name is %s\n",name1->name);
printf("Second name is %s\n",name2);
}

我知道使用这段代码会起作用:

changeCharName(char ** name2) 
{
*name2 = "Jose";
}

changeCharName(&name2);

我只是好奇,为什么我不需要为要通过引用修改的结构执行相同的指向指针设置?

最佳答案

在 ChangeCharName 的第一个版本中,您仅修改函数局部指针的副本。 name1 的原始值保持不变。通过引用传递指针(在函数的第二个版本中)允许您更改指针的原始值(由 main() 看到)。

关于c - 通过引用修改结构与其他指针之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1844435/

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