C語言和C 指標常量和常量指標

2021-10-09 20:20:59 字數 1942 閱讀 4710

指標常量,用指標修飾的常量,它的本質是乙個常量

int a =

111, b =

222;

int*

const p =

&a;printf

("%p\n"

,p);

printf

("%d\n"

,*p)

;*p =

333;

printf

("%d\n"

,*p)

; p =

&b;//報錯,p的值不能更改,[error] assignment of read-only variable 'p'

結果000000000024fe3c

111333

這個常量的型別是 int *。所以p的值是常量,也就是說p所指向的位址是不能更改的,但是位址上的值可以更改

指向常量的指標,它本身是乙個指標,這個指標指向乙個常量。

int a =

111, b =

222;

const

int* p =

&a;printf

("%d\n"

,*p)

;//*p = 333;//報錯,[error] assignment of read-only location '*p'

p =&b;printf

("%d\n"

,*p)

; a =

333;

printf

("%d\n"

,a);

結果:111

222333

指標p的值可以更改,也就是說p指向的位址可以更改,但是位址上的值不能更改(不能通過*p來更改)。

常量指正經常用在函式形參中,用於保護資料不受更改:

//函式原型

intsum

(const

int* list)

;//傳入的是個常量指標,list的資料只能被讀取,不能被更改

適用於constzhi指標的規則:

非cosnt指標的位址和值可以賦給const指標

cosnt指標的位址和值不能賦給非const指標

cosnt int ci =0,

*ci_ptr;

int nci =0,

*nci_ptr;

//const指標賦給const,非const賦給非const,正確

ci_ptr =

&ci;

nci_ptr =

&nci;

//非const賦給const,正確

ci_ptr =

&ci;

ci_ptr = nci_ptr;

//將cosnt賦給非const,不正確

nci_ptr =

&ci;

nci_ptr = ci_ptr;

在函式中更能體現其作用:

給定乙個函式:

void

test

(const

int*p)

;

它接收乙個int的位址,並且不能更改p指向的資料。

test

(ci_ptr)

;test

(nci_ptr)

;

它可以傳入const指標或者普通指標。反之不然,假設

void

test2

(int

*p);

test

(ci_ptr)

;

C語言之常量指標和指標常量

參考部落格 摘抄以上部落格內容 一 指標常量 1 首先是乙個常量,其次是用指標修飾的常量,一般表述為 int const p 指標常量2 指標指向的位置 位址 不能改變,指標本身是乙個常量,但是指標指向的內容 值 是可以發生改變的 3 通過 來進行演示如下 int a,b int const p a...

c 指標常量 和 常量指標

指標常量 指向常量的位址,不允許改變指向位址,指向位置的變數值能被改變 p不可以變 const p 常量指標 指向常量的指標,指標指向的物件不能通過這個指標來修改,可是仍然可以通過原來的宣告修改,也就是說量指標可以被 賦值為變數的位址,之所以叫做常量指標,是限制了通過這個指標修改變數的值 cont ...

C 指標常量和常量指標

首先在c 目前我看到的型別宣告方式,該變數的型別都是由最後幾個字來確定,前面是定語,修飾詞。有其他不同的歡迎指出,共同學習 比如 指標陣列 是陣列,陣列裡存的是指標。陣列指標 是指標,指標指向陣列。所以指標常量 首先是常量,然後是乙個指標,即是該指標是乙個常量,指標的值即位址不會變。常量指標 首先是...