函式返回型別和形參

2021-08-10 18:14:16 字數 2180 閱讀 8563

1、int *add—–return &c;

2、int add——return c;

3、區域性變數不允許以引用(或者指標)形式返回,函式結束,區域性變數生存期就到了

int &add(int a,int b)

void main()

什麼情況下可以以引用返回?

1、返回值定義在全域性

int c=0;

int & add(int a,int b)

void main()

2,靜態量

int c=0;

int & add(int a,int b)

void main()

靜態資料成員只初始化一次,以後不會在呼叫,可見性在函式內,生存期在全域性

void fun (int x)

void mian ()

3.以引用接收,以引用返回

int & fun (int &a)

void main()

void fun1(int a);//傳值

{}void fun2(int &a);//引用=>fun2(int * const a)

{}void main()

==>

fun1(10);//編譯通過

fun2(10); //編譯不通過,不能把字面常量給指標,要給位址

字面常量

1. int a=10;整型字面常量

char x=』a』;整型字面常量

2. a=010;八進位制字面常量

3. a=0x10;十六進製制字面常量

4.float ft=12.33f;單精度浮點型字面常量

=12.23 雙精度。。。

5.char *p=」qweq」字串字面常量

char ch=;//陣列,非字面常量

char ch2=」qwe」;//陣列,非字面常量

引用1、常變數能力擴大—不行

void main ()

2、變數能力縮小—可以

void main()

3、

編譯器不同,結果不同

void main ()

why要用臨時量作為過渡?

由於c++極其不安全(指標本身不安全),若把b的常性去掉,沒有中間臨時變數tmp,那b就可以直接改變a,而產生臨時變數,即使改變b的常性,也不會對直接a造成影響

void fun3(int *a);//指標

區別於

viod fun2(int *const a)

void fun2(int &a)引用

傳指標,自身可以改變,指向也可以改變

傳引用,自身不能改變,指向不能改變

void fun4(int ar);//陣列做形參,退化為指標

int add(int a,int b)

void main()

函式呼叫時,區域性變數產生,當函式結束時區域性變數銷毀

把c給z,要建立臨時變數(eax),不可存到記憶體中(若存到記憶體中,則需要記憶體位址,要找到存放的位址,則需要找到位址存放的位址,無窮無盡根本找不完)

int * add(int a,int b)

void main()

//==>輸出隨機值

void fun5(int (&br)[10]);//引用陣列,對br不改變

//void fun1(int br)

void fun1(int *s);

void fun2(int (*p)[10]);

void main()

; const

int n=sizeof(ar)/sizeof(ar[10]);

fun1(ar);

fun2(&ar);

}

函式返回值和形參

函式包括了除函式名以外還有返回值和形參。這個形參包括了傳入引數和傳出引數 傳入引數 就是數值的傳遞。在函式中不會修改這個引數,不會修改呼叫這個函式的函式的值。例如void exchange int a,int b int main 輸出的結果是 a 4 b 5 這是傳參,僅僅是乙個數值的傳遞。在呼叫...

函式 形參沒有返回到實參

演算法訓練 排序 問題描述 編寫乙個程式,輸入3個整數,然後程式將對這三個整數按照從大到小進行排列。輸入格式 輸入只有一行,即三個整數,中間用空格隔開。輸出格式 輸出只有一行,即排序後的結果。輸入輸出樣例 樣例輸入 9 2 30 樣例輸出 30 9 2 知識點 c語言中函式的引數有 兩種傳遞形式 1...

函式引數 普通形參和引用形參

在呼叫函式時候,引用形參和普通型參是有著很大的區別。首先看函式在使用普通型參時候,編譯器是怎麼工作的。在函式呼叫的時候,編譯器為被調函式在棧空間申請一塊記憶體,此時普通形參也在這塊記憶體取,被實參初始化。說到這裡就明白了,在被調函式執行完畢後,編譯器會將其彈出棧空間。因此,形參也就消失了,此時主函式...