-
嗯,有問題,但不是語法問題。
這種直接使用垃圾值或使用已釋放的指標值的方式稱為百搭指標。
百搭指標的問題很麻煩...... 很多錯誤都是由此誕生的。
以上三種寫法,0是不可讀的,nullptr是C++11的東西,有些編譯器可能不支援。 LZ可以選擇任何乙個。
但是,這裡的解決方案相對更好:直接繫結即可。 int* a = new int;
你不會出錯的。
-
程式的問題在於指標 A 不指向可以自行開啟的可用儲存空間:
int *a,b;設定變數 B 的目的是開闢乙個整形儲存空間供您自己使用。
a=&b;將 a 指向變數 b 對應的空間,否則 a 不知道指向 **,系統可能會報錯,或者後續賦值會影響其他程式(包括作業系統)並導致未知錯誤。
a=1;相當於 b=1; 的賦值。
std::cout<<*a
-
錯誤:未為野生指標危險的指標初始化。
可以寫成如下**。
int i=0,*p=&i;
p=1;cout<<*p<
-
不正確,指標 A 未初始化。
最好進行初始化,以便指標 a 指向整數變數的位址。
-
數量,簡而言之,指標是用來儲存位址的。
程式對變數的操作實際上是將資料讀取和寫入變數所在的儲存空間。 方便地操作變數。
例如:inta=3; *定義乙個整數變數 a 並分配初始值 3* int*p; 定義指標變數 p
p=&a;*讓 p 指向 A 的第乙個位址,即 A 的位址* 程式為 A 分配乙個 2 位元組的儲存單元,如果 2 位元組的位址是(abcd1 和 abcd2,唯一),那麼 p 中的值是 abcd1,而不是 3。 在這種情況下,a 可以直接被 p 引用,實際上,*p=3。 將來,無論 A 儲存在記憶體中的哪個位置,只需呼叫 P 即可引用 A。
在這種情況下,如果 *p=4,則 a 的最終值也是 4。 對於陣列,指標是指向陣列的第乙個位址。
-
親自閱讀這本書,其中包含數百個指標示例和詳細的程式說明。
-
C 語言 071 指標的定義和使用。
-
同學,你不明白指標是什麼意思。
root = null 表示將 root 指向乙個空位置,此時 root 中的所有內容都是空的(沒有開啟記憶體空間),當執行到 root-> 時,程式嘗試讀取 root 中的資料元素,那麼讀取的記憶體就越界了,因為 root 指向的地方是空的(沒有分配記憶體)。
-
首先在我看來,你的第乙個結構的定義是完全沒有必要的。 此結構中只有乙個元素,根本不需要宣告結構。
乙個簡單的巨集定義 define elemtype char is OK,或者 typedef char elemtype
其次,你在主程式中給 root 乙個空的,root 是指向根節點的指標,如果它是空的,則意味著二叉樹根本不存在。 因此,我們無法討論其中節點的資料是什麼的問題。
-
在 30 分鐘內徹底學習 C 指標。
-
int n = 10;
int *p = &n;C 和 C++ 都為真。
int *p = n;不管是C還是C++,這句話都錯了! 型別不匹配。
*的含義在不同的地方是不同的。
當 * 出現在型別定義中時(在型別之後),如 int *p; 這是乙個指標 (int*),它告訴編譯器變數 p 是 int 型別,所以你也可以像這樣編寫 int* p; 或者 int*p; 一切皆有可能。
直接出現在變數之後(未定義時)表示取消引用。
int *p;
p = &n;
這是將 p 定義為 int 指標,然後使 p 等於(指向)整數 n 的位址。
和 int *p = &n;變數 p 實際上是用初始值定義的,因此 p 前面的 * 將與型別(即 int)組合,表明 p 是乙個 int 指標! 在這一點上,不要把 * 和 p 放在一起!
所以 int*p; 我特意把 * 放在 int :) 附近,強調 int* 是乙個型別。
p = &n;
和 int* p = &n;
這是一回事。 就像:
int i;
i = n;
和 int i = n;
這是一回事。 和 *p = *p + 6; p 前面的 * 是取消引用字元。
不要混淆概念,呵呵!
-
C++是乙個程式設計軟體。
變數:程式執行時可以更改的值量,變數的作用是儲存資料。 每個變數都有乙個特定的型別,型別決定了變數儲存的大小和布局,該範圍內的值可以儲存在記憶體中,運算子可以應用於變數。
因此,指標和變數是一種包含關係,變數包含指標變數的概念。
指標的特點是,當位址保持不變時,它們可以輕鬆修改它們指向的內容。
-
我認為如果你真的想學習指標,你應該找一本書。
-
基本概念不諮詢。
先找本書自己學基礎知識,不知道怎麼問就問。
它是將 DAT 的值儲存在加法器位址上,注意它是乙個 16 位無符號數字。 >>>More