C const使用詳解

2021-09-07 06:40:55 字數 1920 閱讀 1162

1.const常量和巨集常量

const int max=100;

#define max 100;

const常量相對巨集常量有兩個有點:

1)有型別安全檢查

2)占用記憶體空間少

2.const變數在記憶體中的位置

我們在c程式的記憶體布局中,已經通過示例進行了說明

#include const

int a = 10; ///

/全部常量a

intmain()

3.const常成員變數的初始化

在某個物件生存期內是常量。

class

test

}

const常量只能通過初始化列表的方式進行初始化。

4.const修飾物件

該物件不能修改。只能訪問成員變數,不能修改。只能呼叫常成員函式。

關於常成員函式,我們在後面介紹。

如下例所示:

#includeclass

test

void fun1() const

{}};

intmain()

5.const修飾指標

我們看一下下面四種寫法:

1) const

int* a = 10

;2) int

const *a = 10

;3) int* const a = 10

;4) const

int* const a = 10;

我們需要知道的是,

const在*左,表示指標指向的內容為常量,這也是我們平時說的常量指標

const在*右,表示指標本身為常量,這也是我們平時說的指標常量

因此,1),2)表示指標a指向的內容不能修改

3)表示指標a本身不能修改

4)表示指標a和a指向的內容都不能修改

6.const修飾成員函式,函式引數,返回值

1)修飾成員函式

void fun1() const;

成員函式名後加上const,即表明該函式為常成員函式。

常成員函式的const隱式修飾this指標,即物件不可修改,

所以,常成員函式只能訪問成員變數,而不能修改。只能呼叫其他常成員函式。

如下例所示:

int

g_a;

void

g_fun(){}

class

test

void fun1() const

{}

void fun2() const

private

:

inta;

}

2)修飾函式引數

void fun0(const test*p_test);

void fun1(const test& test);

在傳入的引數前,加上const,表明傳入的引數不可修改。

3)修飾函式返回值

const

test fun0();

const test* fun1();

當使用const test* fun1();返回指標時,該返回值只能賦給const修飾的同型別指標。

如下例所示:

class

test

const

test fun1()

const test*fun2()

};int

main()

c const使用詳解

關於c 中的const關鍵字的用法非常靈活,而使用const將大大改善程式的健壯性,現將本人的一些體會總結如下,期望對大家有所幫助 一 const基礎 如果const關鍵字不涉及到指標,我們很好理解,下面是涉及到指標的情況 int b 500 const int a b 1 int const a ...

C const使用詳解

一 const基礎 如果const關鍵字不涉及到指標,我們很好理解,下面是涉及到指標的情況 int b 500 const int a b 1 int const a b 2 int const a b 3 const int const a b 4 如果你能區分出上述四種情況,那麼,恭喜你,你已經...

遊戲開發C const使用詳解

發表日期 2010 11 24 一 const基礎 如果const關鍵字不涉及到指標,我們很好理解,下面是涉及到指標的情況 int b 500 const int a b 1 int const a b 2 int const a b 3 const int const a b 4 如果你能區分出上...