這是一個快速問題(我希望)...... 我在大多數時候都得到了指標和雙指標的使用。我確實 有一個問題。如果我只是做一個叫int** ptr的雙倍指標。
在這個例子中,這是一個指向整數的指標的指標。 如果不專門創建一個單指標,那么這個雙指標是否有一個底層的單指標? 如果有的話,我是否能夠訪問它,而不需要單獨創建一個單指標呢?
預先感謝
Bob
uj5u.com熱心網友回復:
想象一下,你的記憶體是一個長長的延續的盒子。 每個盒子都有一個識別它的唯一數字(在這里是指地址)。
當你寫下MyClass value{};時,這意味著你想要存盤資訊,并且你正在請求一個盒子來存盤它。
現在,你知道有人需要這個盒子里的值,而你不能只是克隆它并將它發送給他們。你可以做的是,給出盒子的地址,讓對方找到它,并利用這些資訊做些什么。
這就是MyStruct* pointer_to_value = &value;,盒子的地址。但是你不想失去這個地址,所以你也存盤在一個盒子里。這個盒子只有一個東西:一個地址。
而且你可以這樣做。
而且你可以無限期地這樣做! (但你不應該這樣做;)
下一級將是MyStruct** poiunter_to_pointer_to_value = &pointer_to_value;是,盒子的地址(那恰好是之前一個盒子的地址)。但你不想失去這個地址,所以你也存盤在一個盒子里。這個盒子只有一個東西:一個地址。
如果你想要這些資訊,你就解除索引,你沿著地址回到原來的盒子。你無法分辨地址和資料之間的區別,只是通過觀察盒子內部,所以你有指標型別來告訴你區別。而一個特定的指標并不關心它是指向資料還是指向其他指標。對于計算機來說,它都是資料,但對于程式員來說,指標是具有非常特殊含義的資料。
回答你的問題:
如果你有指向隨機分配的盒子的指標,會發生什么?可能是盒子里有垃圾值,或者你不被允許訪問這些盒子,等等。
在C 中,你可以創建指向任何東西的指標,但就像所有的變數一樣,它們需要被正確地初始化才能發揮任何作用。如果它們沒有指向有效的值,你就會出現 "懸空指標",從而導致崩潰、隔離故障、未定義行為等。你不會想去搞這些東西的!
uj5u.com熱心網友回復:
沒有。創建一個指標變數只是創建一個指標變數。沒有別的。
就像int *ptr;不會為ptr創建一個int來指向,int **ptr;也不會為ptr創建一個int*來指向。它只是創建了ptr。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/315441.html
標籤:
下一篇:向指標陣列中讀行不作業
