gpt4 book ai didi

c - 为什么它在通过引用传递时只加 2?

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:29 24 4
gpt4 key购买 nike

为什么只有当它通过引用传递时,age 的值才会改变?为什么它在按值传递时不起作用?

    #include<stdio.h>
struct employee{
char name[20];
int age;
};
void modify_byVal(struct employee v){
v.age=v.age+2;
}
void modify_byRef(struct employee *p){
p ->age=p->age+2;
}
void main(){
struct employee Sam = {"Sam", 35};
struct employee Mary = {"Mary", 25};
modify_byVal(Sam);
modify_byRef(&Mary);
printf("%s %d", Sam.name, Sam.age);
printf(" ");
printf("%s %d", Mary.name, Mary.age);
}

Output of code

最佳答案

因为你传递值时所做的改变是在传递的变量的副本上。这与 main() 中的变量完全无关。

在第二种情况下,当您将地址作为值传递时,您取消引用它并更改该地址的变量。这就是保留更改的原因。

C 中没有引用传递

关于c - 为什么它在通过引用传递时只加 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47659790/

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