C++中的形参一些区别
学习目标:
区别c++中的形参到底会不会改变原参数的值
记录时间:
- 2023.10.1
学习内容:
形参是基本类型、结构体、类的话,是不会改变原值的。【结构体也有typedef,所以容易联想它和基本类型性质相似,而类其实和结构体差不多,特别是在c++中,结构体中也能定义函数,和类的功能都差不多了,也就只有公有、私有的区别了】
而如果是指针才会改变原值。
如下例:
struct myst {
int x;
myst(int x) : x(x) {}
};
class myclass {
public:
int x;
myclass(int x) : x(x){}
};
void changeValue(int x){
x = 999;
}
void changeValue(myclass mc) {
mc.x = 999;
}
void changeValue(myst sst) {
sst.x = 999;
}
void changeValue(int* arr) {
arr[0] = 999;
}
int main() {
int x = 0;
myclass mc(1);
myst sst = { 2 };
int arr[] = { 3 };
changeValue(x);
changeValue(mc);
changeValue(sst);
changeValue(arr);
cout << x << endl; // 0
cout << mc.x << endl; // 1
cout << sst.x << endl; // 2
cout << arr[0] << endl; // 999
return 0;
}