1. 程式人生 > >C++學習筆記(三)--函式引數,陣列函式,指標和const,二維陣列函式,遞迴,函式指標

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*行數*行數; }



最後祝大家程式設計愉快:)