雖然不能以值傳遞的方式傳遞陣列,但是我們可以把形參寫成類似陣列的形式,eg:
void print(const int*);
void print(const int );
void print(const int[10]);//這裡的維度表示我們期望陣列含有多少元素,實際上不一定.
// 標記指定陣列長度(要求陣列本身包含乙個結束標記)
void print(const char *p);
// 標準庫規範(傳遞指向陣列首元素和尾元素的指標)
void print(const int *beg, const int *end);
// 傳遞乙個表示陣列大小的實參(專門定義乙個表示陣列大小的形參)
void print(const int a, size_t size);
// 陣列形參和const(通常定義成指向const的指標,當函式要改變元素值時,才定義成指向非常量的指標
// 陣列引用形參
void print(int (&arr)[10]);
// 傳遞多維陣列
void print(int (*martix)[10], int rowsize);
// initializer_list形參(用於表示某種特定型別的值的陣列)類似容器vector
void error_msg(initializer_listil);
f(int &arr[10]); //錯誤,將arr宣告為引用的陣列
f(int (&arr)[10]); //正確,arr是具有10個整型的整形陣列的引用
void print(int (*matrix)[10],int rowsize);
int *matrix[10]; //十個指標構成的陣列
int (*matrix)[10]; //指向含有十個整數的陣列指標
initializer_listlst; //預設初始化,t元素型別的空列表
initializer_listlst; //lst的元素和初始值一樣多,lst的元素是對初始值的const副本
lst2 = lst;
lst2(lst); //拷貝列表,拷貝後原始列表和副本共享元素
lst.size();
lst.begin();
lst.end();
void error_msg(initializer_listil)
; //返回乙個空列表,此時process函式返回的vector物件是空的
// 在不同情況下函式返回的vector物件分別用兩個或三個元素進行初始化
else if (expected == actual)
return ;
else
return ;
}
typedef int arrt[10]; //arrt是乙個別名,表示含有10個整數的陣列
arrt* func(int i); //func返回乙個指向含有10個整型的陣列的指標
使用decltype
int odd = ;
int even = ;
//返回乙個指標,該指標指向含有5個整數的陣列
decltype(odd) *arrptr(int i)
record lookup(phone);
record lookup(const phone);
record lookup(phone *);
record lookup(phone *const);
record lookup(account&);
record lookup(const account&);
record lookup(account*);
record lookup(const account*);
//const_cast和過載
//引數和返回型別均為const string引用
//我們可以對兩個非常量的string實參引用呼叫這個函式,但返回結果仍然是const string引用
const string &shortstring(const string &s1, const string &s2)
//實參為非常量引用,返回結果為普通引用
string &shortstring(string &s1, string &s2)
typedef string::size_type sz;
string screen(sz, sz, char = ' '); //正確,宣告函式預設實參
string screen(sz, sz, char = '*'); //錯誤,重複宣告
string screen(sz = 24, sz = 80, char); //正確,新增預設實參
// wd、def、ht的宣告必須出現在函式外
typedef string::size_type sz;
sz wd = 80;
char def = ' ';
sz ht();
string screen(sz = ht(), sz = wd, char = def);
void f2()
inline const string &shortstring(const string &s1, const string &s2)
一般來說,內聯機制用於優化規模較小、流程直接、頻繁呼叫的函式。
constexpr函式
把內聯函式和constexpr函式定義標頭檔案內。
#includeassert(expr);
c primer 第五版 第6章知識總結
第6章知識總結 while語句的注意點 使用關係運算子和表示式 真值的問題 新的 bool型別 關係運算子的優先順序 不確定迴圈與計數迴圈 更多賦值運算子 逗號運算子 do while 選擇哪種迴圈 陣列 使用函式返回值的迴圈示例 假定你想要跳過輸入知道第乙個部位空格或數字的字元時,你可以使用這樣的...
C primer 第五版)第1章習題答案
初學c primer,記錄整理,使用ubuntu14.04和gnu編譯器,答案參考於github 第一章 開始 1.1 檔案命名約定 參考這裡 gcc 5.4 標頭檔案字尾 h,hh,hpp,h,tcc for shared template code 原始檔字尾 cp,cpp,cpp,c,cc,c...
c primer 第五版課後習題 第五章
第五章主要講了函式 include include include include using namespace std void test 5 9 std cout 母音字母個數為 t cnt endl void test 5 10 std cout 母音字母a的個數為 t cnt a endl...