基本类型,指针,双指针作为函数参数

1.指针与双指针的内存示意图

函数内定义如下变量
Int* a=1;
Int** b=2;

a[0x********] --->栈内存地址n(值为1);
b[0x********] --->*b[0x********] ---->栈内存地址m(值为2);

2.当基本类型,指针,双指针作为函数参数传入函数

#include<iostream>
using namespace std;

//修改从函数外部传来的变量的数值
void fun(int* vartype)
{
	int w = 111;
	*vartype = 111;  //只能通过直接修改值的方式修改       
	cout << "*" << endl;
}

//修改从函数外部传来的变量的数值
void fun(int **vartype)
{
	int w = 222;

	*vartype = &w;      //通过修改地址方式修改值    

	//**vartype = 222;  //通过直接修改值的方式修改
	cout << "**" << endl;
}

//修改从函数外部传来的变量的数值
void fun(int ***vartype)
{
	int w = 333;
	**vartype = &w;     //通过修改地址方式修改值

	//***vartype = 333;   //通过直接修改值的方式修改      
	cout << "***" << endl;
}
void main()
{
	int a = 1;
	int *b = &a;
	int **c = &b;

	fun(&a);    //函数内改变a的值
	cout << "a=" << a << endl;

	fun(&b);     //函数内改变b的值
	cout << "*b=" << *b << endl;

	fun(&c);     //函数内改变c的值
	cout << "**c=" << **c << endl;

	system("pause");
}

输出结果:
*
a=111
**
*b=222
***
**c=333
请按任意键继续. . .

总结:

想要在函数内部改变函数外部传入的参数的值,需要传入外部变量的地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章