指針做形參

 
一級指針和二級指針在做形參時的不同:指針用作形參,改變指針地址則值不能傳回,改變指針內容而地址不變則值可以傳回。
 
(特殊情況:改變指針地址採用返回值也可以傳回地址)

對於一級指針,做形參時傳入地址,如果函數只改變該指針內容,OK,該指針可以正常返回,
 
如果函數改變了指針地址,除非返回該指針,否則該指針不能正常返回,函數內對指針的操作將無效。

對於二級指針,做形參時傳入地址(注意此時傳入的是二級指針的地址),如果改變該二級指針地址(**p),
 
對該指針的操作也將無效,但是改變二級指針的內容(例如*p),則該二級指針可以正常返回。
 
總之,指針使用最關鍵的是弄清地址和內容,指針做形參時只有改變其內容時才能正常返回。
 
 
 
void fun(int *q)
{
	int b = 100;
	q = &b;
}

void fun(int *q)
{
	int b = 100;
	*q = b;
}

void fun(int **q)
{
	int b = 100;
	
	*q = &b;
}

void fun(int **q)
{
	int b = 100;
	
	**q = b;
}

void fun(int **q)
{
	int *b = new int;
	
	*b = 100;
		
	q = &b;
	
	delete b;
}

小測驗,看看哪些會改變 q的值。
int x = 10;

fun(x);
//fun(&x);

printf("%d\n",x);

發佈了47 篇原創文章 · 獲贊 5 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章