老九學堂 學習C 第六天

2021-10-18 23:29:36 字數 3666 閱讀 4617

自定義函式的完整寫法:

注:函式原型與函式定義的頭部類似,最後以分號結尾

函式原型中的引數名稱可以省略,只寫引數型別

c++中返回值型別不能是陣列,但可以是其他任何型別(可以將陣列作為結構或物件組成部分返回)

按值傳遞的機制:

給函式傳遞變元(引數)時,變元(引數)值不會直接傳遞給函式,而是先製作變元(引數)值的副/本,儲存在棧上,在使這個副本可用於函式,而不是使用初始值

使用陣列作為函式實參 1:

#include

using

namespace std;

string valuenames=

;//函式定義

void

input

(int

,int);

void

print

(int

,int);

intmain()

//函式實現

void

input

(int values,

int length)

for(

int i =

0; i < length; i++)}

void

print

(int values,

int length)

}

注:

陣列作為函式實參時,只傳遞陣列的位址(首位址),並不傳遞整個陣列空間

當用陣列名作為實參呼叫函式時,陣列首位址指標就被傳遞到函式中

使用陣列作為函式實參 2:

使用陣列區間的函式

void

show

(const

int*

,const

int*);

intmain()

;show

(valuearray, valuearray +4)

;}void

show

(const

int* begin,

const

int* end)

}

使用陣列作為函式實參 3:

使用二維陣列作引數

#include

using

namespace std;

//函式宣告:

void

show

(const

double(*

)[5]

,int);

intmain()

,,};

show

(powers,3)

;}//函式實現

void

show

(const

double

(*arrs)[5

],int length)

cout <<

"\n";}

}

函式指標函式指標的宣告:

//函式原型

double

sum(

double

,double);

//函式指標宣告

double

(*ptrsum)

(double

,double

)

注:

該語句宣告了乙個指標ptrsum,指向乙個函式

double *ptrsum(double, double) 不是函式指標,而是:宣告了乙個函式ptrsum,返回double *型別

示例:

#include

using

namespace std;

//函式宣告:

intpower

(int

,int);

intmain()

//函式實現

intpower

(int num1,

int num2)

return result;

}

函式指標應用

使用函式指標實現加減乘除運算:

double addition(double, double)

double subtraction(double, double)

double multiplication(double, double)

double division(double, double)

double (*ptrcalc)(double, double)

#include

#include

"gzdemo.h"

using

namespace std;

//函式宣告:

double

addition

(double

,double);

//加double

subtraction

(double

,double);

//減double

multiplication

(double

,double);

//乘double

division

(double

,double);

//除//列印計算結果

void

print_result

(double(*

)(double

,double),

double

,double);

intpower

(int

,int);

intmain()

//呼叫

print_result

(ptrcalc, num1, num2);}

//函式實現

double

addition

(double num1,

double num2)

double

subtraction

(double num1,

double num2)

double

multiplication

(double num1,

double num2)

double

division

(double num1,

double num2)

return num1 / num2;

}//列印計算結果

void

print_result

(double

(*ptrcalc)

(double

,double),

double num1,

double num2)

注:

c++中可以使用auto ptrfunc = addition;自動推斷型別(自動推斷型別需要確保變數與初值型別一致)

可以使用typedef簡化宣告:typedef double(*ptrcalc)(double, double) ptrcalc ptrfunc;

C 第六天學習

一次性儲存或者宣告多個相同型別的變數 陣列 陣列型別 陣列名 new 陣列型別 陣列長度 int nums new int 10 nums 0 1 nums 1 2 nums 2 3 nums 3 4 nums 4 5 nums 5 6 nums 6 7 nums 7 10 nums 8 9 num...

第六天學習

變數的作用域 區域性變數 在函式內部定義的變數,這個變數只能在函式內部使用,在全域性當中不能使用。使用就報錯了。全域性變數 在函式外部定義的變數,這個變數可以在全域性使用。但是我們一般不推薦使用全域性變數 因為可能會意外的修改掉變數的值。迫不得已不要用全域性變數 衝突處理原則 就近原則。而不是從上到...

學習第六天

還有九天,我就要去參加北大3日遊了。滑稽 像我這樣的蒟蒻去那也就是旅遊模式吧!無所謂了,隨便去考考,說不定有優秀營員呢?滑稽 不可能,絕對不可能 相信自己好了。這麼多天,好像把面試給忘了,雖然有人說面試是瞎 但是還是要準備準備的 明天看吧!還有什麼知識點沒看嗎?我們來看看st表和hash表吧!先看看...