指针作为函数形参

指针作为函数形参,第1张

  • C++primer:每次调用一个函数,都会重新建立一个形参(类似于临时变量),传入的实参作为初始化值拷贝给形参,一旦实参的值拷贝给形参后,形参和实参其实是两个不同的对象了
  • 如果我们将一个int变量传入,改变值是不生效的
void member_change(int a)
{
	a++;
}
int main()
{
	int a = 1;
	//int* p = &a;
	//cout << &p << endl;
	//ptr_change(p);
	//cout << &p << endl;
	cout << a << endl;
	member_change(a);
	cout << a << endl;
	return 0;
}
/*
1
1
*/
  • 如果将一个指针传入,当我们试图改变指针指向的内容时,是可以生效的。
void ptr_change(int* p)
{
	int a = 2;
	*p = a;
}
int main()
{
	int a = 1;
	int* p = &a;
	cout << *p << endl;
	ptr_change(p);
	cout << *p << endl;
	cout << a << endl;
	return 0;
}
/*
1
2
2
*/
  • 当我们试图改变指针指向的时候,实际上是不行的。
void ptr_change(int* p)
{
	int a = 2;
	int* b = &a;
	p = b;
}
int main()
{
	int a = 1;
	int* p = &a;
	cout << &p << endl;
	ptr_change(p);
	cout << &p << endl;
	return 0;
}
/*
0000000EBC71FAF8
0000000EBC71FAF8
*/
  • 局部变量作为形参传入时,会复制给形参作为临时变量,本身的值不能被改变,改变的只是在函数内部的临时变量,也就不能改变指针的指向。
    • 但是指针的值作为地址的时候,它的指向的空间是真实的,也就是说,我们即使在函数内部 *** 作的是该形参,当我们利用这个值去修改的确存在的内存时,是有效的。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/3002906.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-27
下一篇 2022-09-27

发表评论

登录后才能评论

评论列表(0条)

保存