-
1 # 呆呆的喵小黑
-
2 # C語言答疑課堂
在C語言中,有一個神奇的符號,也就是*號。是的,這是一個非常神奇的符號,神奇到有時候我都想罵街了,為什麼C語言發明者要用*這個星號來同時表示乘法運算和指標定義呢?既然C語言就是這麼發明了,我們也只能這麼接受了。
星號*在指標上的使用,你記住兩點就行了。第一點,星號*可以用在指標定義的時候;第二點,星號*可以用在指標使用的時候。
先說第一點。定義指標的時候,你怎麼告訴編譯器這是一個指標變數,而不是一個普通的整型變數呢?你說,在不適用星號的情況下,你怎麼告訴編譯器?你肯定沒辦法告訴編譯器啊,你想讓編譯器知道這是一個指標變數肯定要給這個指標變數加個什麼修飾詞吧!很不幸,指標的修飾詞就是星號*。也就是說,定義指標變數p的時候,前面加個星號*沒有別的意思,就是告訴編譯器,這是一個指標變數,就是告訴其他閱讀程式設計師這是一個指標變數。除此以外,真的沒有別的意思了。所以在定義指標的時候,前面就加個星號就得了,別去管為什麼了,就像你會去管為什麼1加1等於2嗎?
再說第二點。使用指標的時候,你怎麼得到指標指向的那個值呢?你說你直接寫“p”這種形式就想得到指標變數p指向的那個值?太天真了。“p”這種形式得到的是那個值得地址,不是那個值本身的資料。那咋辦,跟定義指標一樣,給指標變數p前面也加個修飾詞唄,以此來表示得到指標變數p指向的那個值,而不是指標變數p自己的值。再一次的很不幸,這個修飾詞又是星號*!我說C語言發明的人啊,就不能換一個其他的符號嗎?你說定義指標的時候使用星號*,這次使用指標的時候又使用星號*,會很容易把人搞暈的喲!
-
3 # 臭伊伊的小手
這個p要更深刻的理解他的含義,它的記憶體分配地址是隨機的,而它指向的卻是固定地址,這個固定地址是指指向的變數的地址,這個地址必須是固定的,哪怕是編譯器隨機分配的,但對它來說也是固定的,這就是他的含義。
-
4 # prompthu
通常定義指標時,星號都是寫在緊貼變數的左邊,可以把這個星號寫在緊貼型別右邊,這樣理解起來可能更深刻一點,譬如int* p這表示p是一個int*型別的變數,也就是經常說的指向int型別的指標變數,之後只進行指標賦值或移動操作時就不需要使用星號了,而要獲得指標指向的地址所對應的值時,需使用星號解引用
-
5 # 阿里不花312
簡單點說,p是變數名,*代表這個變數是指標型別,int表示這個指標指向的是整型,初學者瞭解這個就夠了,別被那些長篇大論嚇到了。
回覆列表
int *p的意思是定義了一個變數p,這個p的型別是一個int型指標,也就是(int*)。
int *p = &a(初始化操作)相當於
int *p;
p=&a;(賦值操作)