C C 中const變數與指標所指內容的改變

2021-06-01 08:43:13 字數 523 閱讀 3111

先看乙個很非常相當基礎的c的**哈~

void main()

大家先想想這個地方的輸出到底應該是什麼吧!

#include int main()

結果輸出:

124502455

8說明*b=8確實有替a所在的位址賦值。

我在vs2008下編譯輸出彙編檔案,摘選main函式部分彙編**,加上我的理解注釋,如下:

_b$ = -20 ; size = 4

_a$ = -8 ; size = 4

_main proc ; comdat

; 4 :

總結起來,就是const關鍵字令編譯器認為a與常量5等價,所以輸出的結果還是5。

可以試試輸出下面一句,有驚喜。原因我不解釋了,自己想想吧:)

printf("%d\n",*(((&a)+1)-1));

修改const指標所指向的值

dval 3.14159 cptr 3.14159 錯誤 cptr是乙個指向const的指標 double ptr dval 正確ptr指向非const物件 ptr 2.72 正確 cout cptr 指向const的指標cptr實際上指向了乙個非const物件。儘管它所指向物件非const,但仍然...

指標的值 指標的指標 指標所指變數

在c語言中,指標是乙個很重要的組成部分,其本質為某一段記憶體的起始位址。以如下 進行舉例說明 int a 定義乙個變數a int p 定義乙個指標p int q p a 將a的位址賦值給p,其型別為int q p 將指標q的位址賦值給q,其型別為int p a p代表指標p所指向的變數a,其型別為i...

C C 中的const和const指標的基本用法

c c 中使用const關鍵字來修飾常量,所有常型別的變數的值都是不可更改的,並且在定義的時候就必須被初始化 const int a 錯誤,必須初始化 const int a 100 a 200 錯誤,不能更改常量的值 const int a 100和int const a 100這兩種寫法是一樣的...