[語法] 函式的指標(*)與參考(&)
最近研究指標,有點頭昏腦脹,想來請教一下。
一般變數的指標(*)與參考(&)間的關係比較好理解,
但是中間若又多了個函式來傳遞就很混亂,
曾看過下表:
傳遞方式 空間使用 執行效率 資料安全 語法容易
傳數值 劣 劣 優 優
傳指標 優 優 優 劣
傳參考 優 優 優 優
傳參考的語法容易?
請問下列6個 max 函式後我寫的註解是對的嗎?
max5 與 max6 我想取得其最大值的位址該如何做呢?
這個max函式還有其他方式可以拼湊出不同的 * 及 & 的位置嗎?
多謝各位。
/////////////////////////////////////////////////////////////////
#include <iostream>
using namespace std;
int *max1( int *p, int *q) //傳指標
{return ( *p > *q ? p: q);}
int *max2( int &p, int &q) //傳指標
{return ( p > q ? &p : &q);}
int &max3( int *p , int *q) //與max2相反?傳參考?
{return ( *p > *q ? *p : *q );}
int &max4( int &p, int &q) //傳參考
{return ( p > q ? p : q );}
int max5( int *p, int *q) //傳指標,與max3的差別是?
{return ( *p > *q ? *p: *q);}
int max6( int p , int q) //傳值
{return ( p > q ? p : q );}
main()
{
int a=3;
int b=5;
cout << "&a=" << &a << endl;
cout << "&b=" << &b << endl << endl;
cout << "max1 = "<<*max1(&a,&b)<< " " << max1(&a,&b) << endl << endl;
cout << "max2 = "<<*max2(a,b) << " " << max2(a,b) << endl << endl;
cout << "max3 = "<< max3(&a,&b)<< " " << &max3(&a,&b) << endl << endl;
cout << "max4 = "<< max4(a,b) << " " << &max4(a,b) << endl << endl;
cout << "max5 = "<< max5(&a,&b)<< " " << endl << endl;//不能取max值的位值
cout << "max6 = "<< max6(a,b) << " " << endl << endl;//不能取max值的位值
system("pause");
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.85.141.201
推
09/02 17:03, , 1F
09/02 17:03, 1F
→
09/02 17:05, , 2F
09/02 17:05, 2F
推
09/02 17:07, , 3F
09/02 17:07, 3F
→
09/02 17:09, , 4F
09/02 17:09, 4F
→
09/02 17:11, , 5F
09/02 17:11, 5F
推
09/02 17:13, , 6F
09/02 17:13, 6F
→
09/02 17:13, , 7F
09/02 17:13, 7F
→
09/02 17:14, , 8F
09/02 17:14, 8F
→
09/02 17:15, , 9F
09/02 17:15, 9F
→
09/02 17:15, , 10F
09/02 17:15, 10F
→
09/02 17:16, , 11F
09/02 17:16, 11F
→
09/02 17:40, , 12F
09/02 17:40, 12F
→
09/02 17:41, , 13F
09/02 17:41, 13F
→
09/02 17:56, , 14F
09/02 17:56, 14F
→
09/02 17:58, , 15F
09/02 17:58, 15F
→
09/02 18:02, , 16F
09/02 18:02, 16F
推
09/03 14:45, , 17F
09/03 14:45, 17F
→
09/03 14:46, , 18F
09/03 14:46, 18F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章