我感觉很复杂,因为普通的变量我很容易看,多个指针感觉要很多的思考
不想用指针的话,看一下引用&,🙊🙊🙊
//传入int*类型,函数内部可以修改a指向变量的值
void func1(int* a) {
*a = 1;
}
//传入int&类型,函数内部可以修改a的值
void func2(int& a)
{
a = 1;
}
//传入const int*类型,函数内部只能使用a指向变量的值,而不能修改
void func3(const int* a)
{
//报错,
//*a = 1;
//使用a指向的对象
}
//传入const int& 类型,函数内部只能使用a的值,而不能修改a
//等价与func3
void func5(const int& a){}
//等价与func3,只是当func3的输入类型为比较大的数据结构时,效率比func4高
int func4(int a){}
//大数据结构,当做为参数时,需要尽量减少copy
struct BigData
{
int data[1000000];
};
//下面两个函数都可以传入BigData,并且效率比较高,不会造成大内存的copy
void func6(const BigData& a){}
void func7(const BigData* a){}
//func8调用一次就会造成BigData copy一次,效率比较低
void func8(BigData a){}