有預設引數的函式
float area(float r=6.5);
area() //相當於area(6.5);
area(7.5) //形參得到的值是7.5,而不是6.5。
這樣做可以簡化程式,提高執行效率。
例如:float volume(float h,float r=12.5);
volume (45.6) //程式相當於volume(45.6,12.5);
volume(34.2,10.4) //程式相當於h=34.2,r=10.4;
注意:實參與形參的結合是從左到右進行的。因此制定預設值的引數必須放在形參表列中的最右端。
例如:
void f1(float a,int b=0,int c,char d='a')//這是不正確的
void f2(float a,int c,int b=0,char d='a')//這才是正確的
如果要呼叫上面的f2函式,可以採取下面的形式:
f2(3.5,5,3,x) //形參的值全部從實參中得到
f2(3.5,5,3) //最後乙個形參的值取預設值'a';
f2(3.5,5) //最後2個形參的值取預設值,b=0,d='a';
在使用帶有預設引數的函式時有兩點需要注意:
1.如果函式的定義在函式呼叫之前,則應在函式定義中給出預設值。
2.乙個函式不能即作為函式過載,又作為有預設引數的函式。
變數的引用。
引用就是別名。
&是「引用宣告符」。
例如:int a; int &b=a//宣告b是乙個整型變數的引用變數,它被初始化為a。
例如:int a1,a2;
int &b=a1; //使b成為變數a1的引用。
int &b=a2; //又企圖使變數b成為變數a2的引用是不行的。
引用的簡單應用:
#include
using namespace std;
int main()
int main()
int main()
{ int i=3,j=5;
swap(i,j);
cout<
這兩個程式看著差別不大,而且都能出現正確結果。但是在以後的學習中你會發現,指標容易出錯,而且不容易除錯,需要使用運算子「*
」(有時還會使用「
->
」運算子)去訪問有關變數,比較麻煩。
對引用的進一步說明:
1.不能建立void
型別的引用,如:
void &a=9;
//錯誤
因為任何實際存在的變數中都是屬於非void
型別的,
void
的含義是無型別或者空型別,
void
只是在語法上相當於乙個型別而已。
2.不能建議引用的陣列,如:
char c[6]=「
hello
」;
char &rc[6]=c; //錯誤
因為陣列名c
只代表陣列首元素的位址,本身並不是乙個占有儲存空間的變數。
3.可以將變數的引用的位址賦給乙個指標,此時指標指向的是原來的變數。
int a=3;
int &b=a;
int *p=&b;
相當於p
指向變數
a,作用相當於:
int *p=&a
;
但是不能寫成: int &*p=&a
;
4.可以建立指標變數的引用,
如:
int i=5;
int *p=&i;
int *&pt=p;
如果輸出*pt
的值,就是
*p的值
5;
5.可以用const
對引用加以限定,不允許改變該引用的值。如:
int i=5;
const int&a=i;
a=3;
//企圖改變引用
a的值,錯誤
但是它並不阻止改變引用所代表的變數的值,如:
i=3;
//合法
6.可以用常量或表示式對引用進行初始化,但此時必須用const
宣告。如:
int =5;
const &a=i+3;
//合法
用這種方法不僅可以用表示式對引用進行初始化,還可以用不同型別的變數對之初始化。如:
double d=3.1415926;
const int&a=d;
//不會發生編譯錯誤,但是輸出
a的值是
3。
如果不加const
則會發生編譯錯誤。
double d=3.1415926;
int&a=d;
//錯誤
C 變數的引用 使用變數的引用
c 可以對乙個資料可以使用引用,引用是c 對c語言的乙個重要擴充,引用是一種新的變數型別,它的作用是為乙個變數起乙個別名。比如要給變數temp起個別名change int temp 定義整型變數temp int change temp 宣告change是temp的引用上述 宣告了change是tem...
C 變數的引用
int a int b a 1.宣告變數b只是乙個引用,不需要另外的開闢記憶體單元存放b的值,b與a佔記憶體中的同乙個儲存單元,具有相同的位址。2.必須向定義乙個變數,後宣告對該變數的引用。對引用只有宣告,沒有定義。3.在宣告乙個引用的時候必須同時進行初始化,即宣告它代表的是哪乙個變數。4.在宣告乙...
C 變數的引用
變數的引用 就是給變數起乙個別的名字,兩個變數的位址是相同的。資料型別 別名 原名 int a 10 int b a a 和 b 都是 10 b 20 a 和 b 都是 20引用必須初始化 int c 錯誤 int c a 正確初始化後不能再改變 int c a c b 這句話就成了賦值操作不要引用...