這裡&是取位址運算子,*是間接運算子。
&a 的運算結果是乙個指標,指標的型別是a 的型別加個*,指標所指向的型別是a 的型別,指標所指向的位址嘛,那就是a 的位址。
*p 的運算結果就五花八門了。總之*p 的結果是p 所指向的東西,這個東西有這些特點:它的型別是p 指向的型別,它所占用的位址是p所指向的位址。
例六: int a=12; int b; int *p; int **ptr; p=&a; //&a 的結果是乙個指標,型別是int*,指向的型別是int,指向的位址是a 的位址。 *p=24; //*p 的結果,在這裡它的型別是int,它所占用的位址是p 所指向的位址,顯然,*p 就是變數a。 ptr=&p; //&p 的結果是個指標,該指標的型別是p 的型別加個*,在這裡是int **。該指標所指向的型別是p 的型別,這裡是int*。該指標所指向的位址就是指標p 自己的位址。 *ptr=&b; //*ptr 是個指標,&b 的結果也是個指標,且這兩個指標的型別和所指向的型別是一樣的,所以用&b 來給*ptr 賦值就是毫無問題的了。 **ptr=34; //*ptr 的結果是ptr 所指向的東西,在這裡是乙個指標,對這個指標再做一次*運算,結果是乙個int 型別的變數。
2 讓你不再害怕指標 指標的算術運算
指標可以加上或減去乙個整數。指標的這種運算的意義和通常的數值的加減運算的意義是不一樣的,以單元為單位。例如 例二 char a 20 int ptr int a 強制型別轉換並不會改變a 的型別 ptr 在上例中,指標ptr 的型別是int 它指向的型別是int,它被初始化為指向整型變數a。接下來的...
1 讓你不再害怕指標 細說指標
指標是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的乙個位址。要搞清乙個指標需要搞清指標的四方面的內容 指標的型別 指標所指向的型別 指標的值或者叫指標所指向的記憶體區 指標本身所佔據的記憶體區。讓我們分別說明。先宣告幾個指標放著做例子 例一 1 int ptr 2 char ptr 3 in...
1 讓你不再害怕指標 細說指標
指標是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的乙個位址。要搞清乙個指標需要搞清指標的四方面的內容 指標的型別 指標所指向的型別 指標的值或者叫指標所指向的記憶體區 指標本身所佔據的記憶體區。讓我們分別說明。先宣告幾個指標放著做例子 例一 1 int ptr 2 char ptr 3 in...