基本類型,指針,雙指針作爲函數參數

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
請按任意鍵繼續. . .

總結:

想要在函數內部改變函數外部傳入的參數的值,需要傳入外部變量的地址

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