c 常用語法

2021-08-04 16:54:33 字數 2341 閱讀 3499

使用陣列引用形參的原因是為了防止陣列降價為指標,如果降價為指標,在計算陣列長度時就會出問題,如:

#include 

using

namespace

std;

void printarraysize(char arry[20])

; cout

return

0;}

在這裡陣列array被降價為指標處理了,在將實參array賦值給printarraysize函式中形參時,陣列被降價處理為指標,相當於void printarraysize(char* const arry); 而sizeof(array)計算的是指標變數array的長度

為了防止陣列被降價處理為指標,需要使用陣列引用形參的方式,如:

#include 

using

namespace

std;

void printarraysize(char (&arry)[20])

; cout

printarraysize(array);//輸出20

return

0;}

const引用可以用不同型別的物件初始化(只需從一種型別轉換成另一種型別),也可以是不可定址的值,如文字常量。這時使用const修飾的應用會生成乙個臨時物件

用不可定址的值進行初始化:

const

int &age = 10;//編譯器會將它轉換為 int tmp = 10; const int &age = tmp;

int &a = 10; /*編譯會出現錯誤的,沒有const修飾,不會生成臨時物件,因此會出現錯誤*/
引用在內部存放的是物件的位址,他是物件的別名,對於不可定址常量,如文字常量,以及不同型別的物件,必須生成乙個臨時物件,而引用指向這個臨時物件。

不同物件之間的賦值:

double d = 2.33;

int i = &d;//會出錯,不同型別之間的引用是不允許的

double d = 2.33;

const

int &i = d;/* 正確,編譯器會這樣處理:int tmp = d;//生成臨時物件,實現一次型別轉換 const int &i = tmp;*/

d = 6.66;

cout

<<"i = "

1.const形參引用和非const形參引用實現的函式過載

void func(int a);

void func(const

int a);/* 不是函式過載 */

int i =100;

func(i);//無法判斷會呼叫哪個函式

void func(int& a);

void func(const

int& a);/* 是函式過載 */

const

int i = 100;

func(i);/* 會選擇第二個函式,編譯器判斷實參是const變數,因為const不能轉換成其它型別,所以只能把const物件賦給const物件。const 實參只能傳給const形參引用 */

int k = 50;

func(k);/* 編譯器會優先選擇非const引數的函式 */

2.底層const修飾的形參和非底層const修飾的形參實現函式過載

int

func(int *p)

intfunc(int *const p);/* 並沒有實現函式過載 */

int

func(int *p)

intfunc(const

int *p);/* 實現函式過載,擁有底層const的實參只能賦值給擁有底層const的形參 */

const實現的函式過載

class a

用const修飾的類成員函式有以下特性:

1.不能改變類成員變數,不能訪問非const修飾的類成員函式

2.只能被const修飾的類物件、指標、和引用訪問,const修飾成員函式的最重要作用就是限制對於const物件的使用

3.const成員函式能夠訪問物件的const成員,而非const成員函式不能訪問const成員

mysql常用語法 MySQL常用語法

更新資料 update 表名 set 健名 更改的值 where 建 刪除資料 delete from 表名 where 索引 create index 索引名稱 on 表名 鍵名 建立試圖 create view 檢視名 鍵,鍵 as select matchno,abs won lost fro...

mysql基本常用語法 mysql 常用語法

1.1.開啟 service mysql start 1.2.關閉 service mysql stop 1.3.重啟 service mysql restart 2.1.密碼明文 語法 mysql u使用者名稱 p使用者密碼 舉例 mysql uroot p123456 2.2.密碼密文 語法 m...

wiki常用語法

公司啟用了streber執行部分專案管理工作。streber基於wiki系統建立。在streber中,我們可以建立專案 project 可以為專案建立milestone task等等。與其他專案管理系統一樣,可以為每乙個task分配資源,指定執行時間。由於streber基於wiki組建,具備了wik...