常量指標與指標常量(const用法)

2021-07-11 05:02:10 字數 1081 閱讀 6778

初了解,const是在c語言中為了提高程式的安全性和可靠性而用來修飾資料型別的,const修飾的資料型別是指常型別,常型別的變數或物件的值是不能被更新的,即相當於限定為「唯讀」的狀態。

即指向常量的指標,該指標所指向的是乙個常量,常量的值不能通過解引用來改變,但是這個指標的指向可以改變

如:

const

int *pa;

intconst *pa;

這兩條語句實現的功能是相同的,均宣告了乙個指向常量的指標,這個常量pa本身是先被賦值了的,就不能通過解引用來改變pa的值,即*pa=d(d是乙個新的值)是錯的,想要通過訪問pa中儲存的常量的位址來間接改變常量的值是不能實現的,但是pa=&d(d是乙個已宣告的變數或常量);就是對的,因為指標的指向可以改變,指標內儲存的位址是可以改變的。

int *const pa =&n;
這條語句的意思就是宣告了乙個常量指標pa初始化指向的是n,那麼他就只能指向n,而不能再指向其他的變數了,即pa=&c(c是其他已宣告的變數)就是錯的不能實現的,但是可以通過解引用來改變變數的值,即*pa=d(d是已宣告的整型變數)是可實現的,相當於通過訪問指標儲存的位址即n的位址來改變變數n的值。

在了解這個概念時,有看到一些前輩給的經驗技巧來使這個概念變得通俗容易區分。

1.有說看const離誰更近一點,在忽略資料型別的情況下離變數近,那他限定的就是指標,即為常量指標,離指標*更近,那他限定的就是變數的值,即為指標常量。

2.也有說,看const在 * 的哪一側,若const在 * 號的左側,那麼就是指標常量,若const在 * 的右側,則為常量指標。

判斷方法各有不同,但原理都是一樣的。

下列哪兩個是等同的

int b;

a const int* a = &b;

b const* int a = &b;

c const int* const a = &b;

d int const* const a = &b;

解析:答案應該是cd。a選項宣告的是指向常量的指標,即指標常量;b選項是乙個錯誤的表示方法;c選項和d選項都表示宣告的是指標本身為常量,他所指向的也是乙個常量

指標常量與常量指標(const用法總結)

const是乙個c語言的關鍵字,它限定乙個變數不允許被改變。使用const在一定程度上可以提高程式的安全性和可靠性 指向常量的指標 const int pa int const pa 兩者等價。因為指向常量的指標有時候會指向常量,所以它具有這個性質 不能靠解引用改變它指向的物件的值 以此保護它所指向...

指標常量與常量指標(const用法總結)

const是乙個c語言的關鍵字,它限定乙個變數不允許被改變。使用const在一定程度上可以提高程式的安全性和可靠性 指向常量的指標 const int pa int const pa 兩者等價。因為指向常量的指標有時候會指向常量,所以它具有這個性質 不能靠解引用改變它指向的物件的值 以此保護它所指向...

const常量 指向常量的指標和常量指標

1 先看const常量的情況 const int a 2 int const b c c是已經宣告過的整型 兩者都可以。本地的const常量必須在第一次宣告時就初始化,用變數或常量初始化都可以,只是初始化一次以後它的值就不能再改變了,此所謂const的含義。2 接著看指向常量的指標 const in...