先看乙個很非常相當基礎的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這兩種寫法是一樣的...