C語言的指標是 ptr還是ptr?

時間 2021-05-13 03:40:04

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沒有指明具體型別。這裡舉個具體...