C++學習筆記(三)--函式引數,陣列函式,指標和const,二維陣列函式,遞迴,函式指標
C++ Primer Plus學習筆記之三
每一塊寫了一個詳細闡釋的demo,具體使用方法以及注意事項在程式碼裡都有備註
第七章函式--C++的模組程式設計,總計分為以下幾塊--
函式引數:介紹了函式的生命規則以及定義
陣列函式:陣列作為變數時的使用方法
指標和const:靈活運用指標和const
函式和二維陣列:二維陣列作為變數時宣告以及定義的使用方法
遞迴:呼叫自身函式的使用範例
函式指標:函式的指標作為變數在某些專案中會減少工作量
#include<iostream>
#include<string>
#include <windows.h>
using namespace std;//如果不加這個string是無法直接用的
////////////////////C++ Primer Plus學習筆記(三)///////////////////////////
//-------------------------2016-9-2------------------------------------------
//----main()函式裡備註的每一行代表一個功能函式以及知識點,可以去掉看看效果----
//函式呼叫--略,以下每個都設計到函式的宣告以及呼叫
void 函式引數(int,string);//未必要把變數寫出來,因為只是一個佔位符
void 陣列函式(int ar[], int size);//注意不要用void 陣列函式(int ar[size])這種,因為這裡是把陣列當作指標的!!
void 指標和const();
int 函式和二維陣列(int (*ar2)[3],int size);
//函式和結構把結構看成一個變數即可,類似
//函式和string依舊類似
void 遞迴(int);//函式裡呼叫自己
//-----------------------注意看指標函式的定義以及用法-----------
void 函式指標(int line,double(*pf)(int));//傳遞函式的地址,某種程度上把函式作為變數
double 帥比1的效率(int 行數);
double 帥比2的效率(int 行數);
//------------------------------------------------
int main() {
//函式引數(9, "演示函式傳參");//cout九次這個string
//int 陣列[5]; 陣列函式(陣列, 5);//演示了陣列作為引數如何書寫
//指標和const();
//int data[2][3] = { {1,2,3},{4,5,6} }; cout << "元素和為:" << 函式和二維陣列(data, 2) << endl;
//遞迴(4);
//cout << "帥比1寫"; 函式指標(100, 帥比1的效率); cout << "刷比2寫"; 函式指標(100, 帥比2的效率);
system("pause");
}
void 函式引數(int i, string 帥比) {
for (int k = 0; k < i; k++) {
cout << 帥比 << endl;
}
}
void 陣列函式(int ar[], int size) {
for (int i = 0; i < size; i++) {
ar[i] = i*i;
cout << "第" << i+1 << "個引數的值為:" << ar[i] << endl;
}
}
void 指標和const() {
int 數字 = 233;
const int *指標 = &數字;//const型別的指標指向一個int數字;
cout << "不能修改const型別指標,但指向的非const變數可以修改。"<<endl;
int 數字2 = 23333;
int *二次指標_1 = &數字2;//可以用這個指標修改數字2 的值
const int *二次指標_2 = 二次指標_1;//二次指標..感覺意義也不大
cout << "有事兒沒事兒還是儘量避免多個指標相互指來指去吧,總會粗事兒的。。。" << endl;
cout << "儘量使用const是好習慣!!" << endl;
int 數字3 = 2333;
const int *萌萌的指標 = &數字3;
int *const 不萌的指標 = &數字3;
*不萌的指標 += 1;//看吧,不報錯。。。
cout << "萌萌的指標不能修改數字3 的值,不萌的指標不能指向其他地址了,但可修改。。。" << endl;
}
int 函式和二維陣列(int ar2[][3], int size) {
//計算所有元素之和演示二維陣列函式使用方法,和定義的地方對比可以看出兩種寫法
int total = 0;
for (int i = 0; i < size; i++) {
for (int r = 0; r < 3; r++)
total += ar2[i][r];
}
return total;
}
void 遞迴(int n) {
cout << "帥不過" << n << "次..." << endl;
Sleep(500);
if (n > 0) 遞迴(n - 1);
cout << "出來帥總歸要還的...遞迴到這裡只能結束了" << endl;
}
void 函式指標(int line, double(*pf)(int)) {
cout << line << "行程式碼會耗費" << (*pf)(line) << "小時" << endl;
}
double 帥比1的效率(int 行數) { return 0.05*行數; }
double 帥比2的效率(int 行數) { return 0 / 03 * 行數 + 0.0004*行數*行數; }
最後祝大家程式設計愉快:)