C/C++结构体给函数传参

C语言中结构体给函数传参有两种方法:

1.值传递(修改形参不改变原值)

void fun(STUDENT student){……}
int main(){
	fun(student);
}

2.引用传递(传的是地址,修改形参会改变原值)

void fun(STUDENT * student){……}
int main(){
	fun(&student);
}

此外C++里还有一种引用传递的写法为:

void fun(STUDENT & student){……}
int main(){
	fun(student);
}

 
测试代码(为.cpp文件):

#include 
typedef struct {
  int price;
}CAR;
void change1(CAR car){
  car.price = 200;
}
void change2(CAR *car){
  car->price = 200;//修改的是引用的成员,故要用->
}
void change3(CAR &car){//第三种写法只能使用g++编译器进行编译
  car.price = 200;
}
int main(){
  CAR car = {130};
  change1(car);
  printf("change1函数修改价格:%d\n",car.price);
  change2(&car);
  printf("change2函数修改价格:%d\n",car.price);  
  change3(car);
  printf("change3函数修改价格:%d\n",car.price); 
  return 0;
}

运行结果:
在这里插入图片描述
注:点操作符(.)与箭头操作符(->):
都用于操作结构体的成员变量,区别在于:点操作符是对结构体本身进行操作,而箭头操作符是对结构体的引用进行操作。

你可能感兴趣的:(c语言,c++)