1樓:舒默語
其實 * 並不是和 ptr 連在一起的,你可以寫 int * ptr,*左右兩邊的空格都是可以隨意的,所以 ptr 是指標,它儲存的值是乙個記憶體位址,但是 ptr 這個變數是指標變數,至於&就是取拿個記憶體位址裡的值。
*最重要的作用其實是和前面的 int 串在一起的,它表明了ptr這個位址上儲存的變數型別,從而決定了它的記憶體空間長度。
2樓:冷月Des
我猜你的疑問應該和下面的語句是一樣的
intval=10
;int
*ptr=&
val,
val2=3
;//This
iscorrect
要記住:*是和變數連在一起的。至於你說的確實如此,ptr才和&val等價,*ptr和value等價在對,所以ptr = &val,*ptr 和 ptr 的關係等同於 val 和 &val的關係。
至於你使用起來擰巴,不妨這麼使用,看成ptr 是乙個int* 的變數就好了(只是初期可以這麼理解)
int* ptr = &val;
//等同於
int* ptr;
ptr=&val;
3樓:浪花
你應該把int*看作乙個整體,用來定義指標,這樣就好理解了。
int* ptr = &value;
int*是乙個整體,是乙個符號,不要分割來看。現在賦值是ptr = &value,而不是你所說的*ptr = &value,這點c語言中文網裡邊的文章講的很清楚,推薦你看一下。C語言指標變數的定義和使用(精華)
————截圖自C語言中文網
4樓:
int* ptr = &value;
宣告乙個叫 ptr 的整數指標,同時使用 value 的位址去初始化它。完畢。
5樓:XeonDA
你可以這樣想:
int *ptr=&i;
現在出現了乙個變數ptr,給他賦值&i;
向左看,這個ptr是乙個指標。什麼樣的指標呢?再向左看,int型別的。
6樓:魔某人
其實你宣告int *ptr = &value;的時候實際的意思是:
(int*) ptr = &value;
宣告ptr為int*(整型指標)型變數,初始化為&value(變數value的位址)。
這種語法容易混,比如說下面的宣告語句:
int *ptr1, *ptr2, value;
其實應該理解成:
(int*) ptr1, ptr2;
int value;
明白嗎?
7樓:王旭競
嗯哼,你問到了指標這個東西,最容易迷惑人的乙個地方。
int* ptr = &value;
這一行是宣告的語法,是規定出來的,即宣告ptr是乙個指標,同時ptr= &value
這跟平時使用這個指標的時候,賦值 *ptr = &value 不是一回事。
所以你才會有這個疑問。說穿了不值一提。
你其他理解都是對的
為什麼說指標是 C 語言的精髓?
悽臨雨 指標 型別 虛擬記憶體位址值 整數 指標運算 根據型別確定的寬度對位址值進行修改。其中c語言裡的型別,比c 裡的型別的功能弱的多,所以你覺得c的精髓是指標,在c 裡就是個基礎操作,沒什麼大不了的。因為c語言的語言功能太貧瘠,所以只能靠記憶體位址的修改來做事,沒它就寸步難行。 Howard J...
C語言指標與二級指標的問題?
已登出 列印不出來是因為這條語句將嘗試訪問非法 程式不該訪問 的記憶體。printf s pt 嘗試訪問超出劃定範圍的記憶體空間,被作業系統攔下 答主重現了一下,那麼從下圖可以看出,p和pt的位址是0x00affb6c,abc 的首位址是0x00de6b30 那麼解引用pt得到的是0x00de6b3...
在 C 語言中指標的歷史是怎樣的?
Crazyjin 型別 變數和變數的值本來就是三個概念 一直都是三個概念。int是型別,int a 申明了乙個int型別的變數a。pointer是型別,pointer variable是pointer型別的變數。只不過這裡pointer和pointer variable沒有指明具體型別。這裡舉個具體...