自定義函式的完整寫法:
注:函式原型與函式定義的頭部類似,最後以分號結尾
函式原型中的引數名稱可以省略,只寫引數型別
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表吧!先看看...