C++学习笔记十四之函数参数传递

函数参数传递

传参方式

  • 值传递
  • 址传递
    • 若是想经过参数改变某一个变量的值,实参为该变量的地址。称为址传递
  • 引用传递
    • 引用传递:形参是引用类型,实参必须是变量名

数组做为函数的形参

  • 弱化为指针类型 大小为4个字节
  • 数组做为函数形参时,必须添加一个参数做为数组大小

练习代码

//值传递
void change(int a, int b) {
	int t = a;
	a = b;
	b = t;
	cout << "a=" << a << endl;//20
	cout << "b=" <<b << endl;//10
}
//址传递
void change(int *pa, int *pb) {

	int t = *pa;
	*pa = *pb;
	*pb = t;
	cout << "a=" << *pa << endl;//20
	cout << "b=" << *pb << endl;//10
}
//引用传递
void change1(int& a, int& b) {
	int t = a;
	a = b;
	b = t;
	cout << "a=" << a << endl;//10
	cout << "b=" << b << endl;//20
}
void GetMemory(int **p) {
	*p = new int;//假设申请的内存首地址为0x00FF00FF
}
void PrintArray(int n[100],int size) {
	cout <<sizeof(n) << endl;//4

	for (int i = 0; i < size;i++)
	{
		cout << n[i] << endl;
	}
}
int main() {
	int n[6] = {};
	PrintArray(n,6);

	int *p = nullptr;
	GetMemory(&p);
	cout << p << endl;
	delete p;
	p = nullptr;

	int a = 10, b = 20;
	change(a, b);
	cout << "a=" << a << endl;//10
	cout << "b=" << b << endl;//20

	change(&a, &b);
	cout << "a=" << a << endl;//20
	cout << "b=" << b << endl;//10

	change1(a, b);
	cout << "a=" << a << endl;//10
	cout << "b=" << b << endl;//20
	return 0;
}
复制代码
相关文章
相关标签/搜索