为什么只有当它通过引用传递时,年龄值的变化?为什么在通过值传递时不起作用?
#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);
}
答案 0 :(得分:2)
因为您在传递值时所做的更改是在传递的变量的副本上。这与 html5-video-container {
background-position: center;
background-repeat: no-repeat;
width: 100%;
height: 100%;
left: 0px;
top: 0px;
position: absolute;
}
video.video-stream.html5-main-video {
background-position: center;
background-repeat: no-repeat;
width: 100%;
height: 100%;
left: 0px;
top: 0px;
position: absolute;
}
中的变量完全无关。
在第二种情况下,当您将地址作为值传递时,您取消引用它并对该地址的变量进行了更改。这就是改变保留的原因。
C 中没有通过引用传递。
答案 1 :(得分:0)
按值传递:将传递变量副本,对该副本进行更改而不是实际变量
按地址传递:地址在函数内部传递,因此对存储在该地址的变量进行更改