-
class test
protected:
static test* ptest;對於此用法,請告知。 如何使用。
讓我告訴你,這裡有兩點,1類的成員是指向類本身的指標。
2.靜態成員變數。
讓我們從第一點開始:
房東有這樣的疑問嗎:我的類還沒有建成,我怎麼能包含指向類型別的指標? 這在 C++ 標準中是允許的,讓我們看看以下情況:
class test
protected:
test ptest;
這是不允許的,因為在建立類物件時,成員是初始化的,而成員本身不是在類中建立的,所以,不,可以這樣理解。
但是在指標的情況下,是的,我們知道,儘管指標指向乙個類物件,但它本身是乙個只有 4 個位元組大小的位址。 只是這個位址只能指向型別測試的物件。
然後是第二點,靜態成員變數。 在我這麼說之前,我建議房東參考一下C++入門這本書,其中非常詳細地介紹了類的靜態成員。 我會告訴你我記得的
類的靜態成員屬於類,而不是物件”。 這句話是靜態成員的本質,很難理解。
例如:測試a;
test b;
好吧,ptest 既不屬於 A 也不屬於 B,它屬於類。
如果你因為害怕被誤導而說得太多,這本書說得最清楚
順便說一句:靜態成員函式只能引用靜態成員變數。
-
你能把問題說得更清楚嗎,你想如何使用它? 一般用法如下:
class test
protected:
static test* ptest;對於此用法,請告知。 如何使用。
test* test::ptest = 0;這是初始化,但您也可以根據具體情況為其分配新測試。
test::ptest->.這裡介紹一下如何使用它,就像你使用測試指標一樣,但它是靜態的,也就是說,無論你在**中如何使用它,你使用的指標都是同乙個,你必須先弄清楚靜態的用法。
-
第一種寫法:
a).p=&b;
高於 *,並且 (指標) 兩側的括號不能丟失。 如果去掉括號並寫上*,那麼它就等價於*(,所以意思是完全錯誤的。
第二種寫法:
a->p=&b;
是乙個新的運算子,通常稱為“arrow”,可以使用它直接通過結構指標獲取結構成員; 這也是 -> 在 C 語言中的唯一用途。
struct 是一種資料型別,是用於建立變數的模板,編譯器不會為其分配記憶體空間,就像 int、float、char 等關鍵字本身不會占用記憶體一樣; 結構變數包含真實資料,需要記憶體來儲存它們。 以下是乙個錯誤,不能取結構名稱的位址,也不能分配給其他變數。
-
struct 指標成員指向乙個變數,這有點難以理解。
從字面意義上回頭看斷句,是有的。
有幾種可能性可以回答如下:
首先定義乙個包含所有可能方案的結構:
struct test
struct test t1, *t2;
變數定向到的 1 個結構指標成員。
結構中有乙個指標成員,然後您要訪問該結構成員指向的變數值。
然後你可以 *(這種方式取 p 的值。
2 struct 指標成員指向變數。
有兩種方法可以訪問這種情況:
t2->p)
或 *(*t2)。p)
效果是一樣的。
3 描述不正確,但它是:
struct 指標指向成員變數。
同樣,可以使用兩種方法:
t2->p
或 *(*t2)。p
-
由於複數 int 是值型別,因此不能直接賦值給 p(p 是 int 指標型別)。 因此,將支架放在二樓是正確的。 通過獲取 p 的位址並將其轉換為相應的指標,然後將 b 直接分配給它。
-
對於要呼叫成員的類物件,需要有乙個類物件限定,它一方面是乙個類命名空間,另一方面是乙個隱式的 this 指標。
資料和函式,包括類物件的資料成員和成員函式,是可定址的,自然可以定義乙個指標來指向類成員或成員函式,然後可以通過指標訪問類的成員。 這包括指向屬性成員的指標和指向成員函式的指標。
關於資料的指標變數儲存具有特定資料型別的記憶體空間的第乙個位址,確定它所指向的目標物件的藍圖,核心根據資料型別和資料型別的編碼和解碼方法確定目標物件所需的記憶體空間量。 關於**的指標變數是指指向函式的指標變數,它也是第乙個位址,型別由函式簽名決定,指令集編碼和讀解碼方法**。
指向類資料成員的指標
為了區別於普通的指標變數,該定義具有額外的類名作用域限定,該限定也顯示了與類及其成員的相關性。
賦值和初始化。
指向非靜態資料成員的指標在定義時必須與類相關聯,並且在使用時必須與特定物件相關聯。
取消引用。 由於類不是執行時現有物件。 因此,在使用這種型別的指標時,首先指定類的物件,然後使用該物件來引用指標指向的成員。
例:指向類成員函式的指標
指向非靜態成員函式的指標必須在三個方面與其成員函式一致:相同的引數列表、相同的返回型別和相同的型別。
該定義與全域性函式指標不同,具有額外的類名範圍限定,該限定還顯示了與類及其成員的相關性。
賦值和初始化。
取消引用。 由於類不是執行時現有物件。 因此,在使用這種型別的指標時,首先指定類的物件,然後使用該物件來引用指標指向的成員。
示例:當指向非靜態成員時,類名必須用作限定符,而在使用小時答案時,類的例項必須用作限定符。 指向靜態成員時,宣告時無需使用類名作為限定符。 (當然,靜態成員也需要通過類名限定才能進行右值)。
使用指向 classmate 函式的指標,可以實現更晦澀的介面。
類函式指標與普通函式指標相同,也可以作為函式引數來形成函式**的效果,實現更加靈活和通用。
end-
-
總結。 親愛的,很高興為您解答! c 指標引用的方法是用於表示記憶體位址的指標,整數是它所指向的變數的位址。
引用是變數的新名稱,引用是別名。 指標在宣告時可以暫時不初始化,當然,每次使用指標時都必須檢查它,以防出現空指標異常問題 0。 引用從來都不是空的,它必須表示乙個物件。
指標儲存位址,可以重新分配。 引用始終指向它最初表示的物件。
C++ 指標引用。
親愛的,很高興為您解答! c 指標引用的方法是用於表示記憶體位址的指標,整數是它所指向的變數的位址。 引用是變數的新名稱,引用是別名。
指標在宣告時可以暫時不初始化,當然,每次使用指標時都必須檢查它,以防出現空指標異常問題 0。 引用從來都不是空的,它必須表示乙個物件。 指標儲存位址,可以重新分配。
引用始終指向它最初表示的物件。
擴充套件您的資訊; 使用正確的工具完成正確的工作。 指標可以不受約束地操作記憶體中的任何內容,這很強大,但也很危險,因此您可以在正確的時間使用引用。 當你需要指向某物時,你永遠不要讓它指向別的東西,例如一些函式引數可以使用引用來避免複製,或者實現指標無法滿足語法要求的運算子,例如 vec[3]=3,你可以使用引用,而在其他任何時候,你都需要使用指標。
-
1.既然是指標變數,那就把乙個變數的位址值賦給指標變數吧!
2.具體來說,給指標賦值位址值有兩種方式:一種是用位址字元&操作嵌入變數,另一種是利用malloc函式動態開啟記憶體,給指標變數賦值記憶體位址值。
3. 例如,定義 int 指標變數 int
p;和 int 型別變數
-
首先你要明白的是,指標運算元的作用,我用一句話來概括,用起來不會錯。 指標運算子 * 的用途是在引用 * 的位址中查詢值。 所以,只要*後面的變數代表乙個位址,就可以用*運算子來求這個位址中的值,你不在乎這個位址的表示是什麼,只要是位址,就可以用*來求位址中的值。
因此 i=*&p;
False,因為 p 是指標,那麼 &p 表示指標 p 的位址,那麼 *&p 表示指標 p 位址中的值,即 p,這個值也是位址,變數 i 需要乙個整數值,所以是錯誤的。 這裡注意指標 p 也有乙個位址,它也有乙個值,指標 p 的值是 p,但這個值是另乙個變數的位址。
q=**&p;
False,*&p解釋如上,**&p是p所指的負位址的值,表示*p,q必須是位址,所以是錯誤的。
i=&*p;
錯誤,*p 是 p 引用的位址的值,&*p 是 p 指向的值,然後呼叫位址,所以這是錯誤的,因為 i 需要乙個整數,而不是位址。
p=&*&i;
正確,因為 *&i 等於 i 的值,而 &i 表示 i 的位址,所以它是正確的。
q=*&*p;
False,簡單的判斷方法是最左邊的運算子是 * 運算子,這個運算子的結果是值而不是位址,所以肯定是錯的。 具體來說,*p 是指 p 所指位址的值,而 &*p 等價於 p。
i=*&*p
沒錯,原理與上面解釋的相同。
-
物件指標:指向類成員的指標。 在 C++ 中,可以指定指向類的資料成員和成員函式的指標。
函式指標是指向函式的指標變數。 因此,“函式指標”本身首先應該是乙個指標變數,只不過指標變數指向函式。 這就像指標變數可以指向整數變數、字元型別和陣列一樣,在本例中,指標變數可以指向函式。 >>>More
陣列和指標之間的區別:
陣列名稱確實表示指向陣列第乙個位址的指標,但是這個指標很特殊,它的值(指標的值是指標指向的位址)不能被覆蓋,只能覆蓋它指向的內容,換句話說,陣列名稱只能指向陣列的第乙個位址, 如果有陣列 char a;那麼如果 a = a+1; 這是乙個甚至無法編譯的錯誤。 對於普通指標,例如,可能有乙個陣列 char a; 然後定義乙個字元 *p = a; 然後使用 p = p+1 是有效的,這意味著指標 p 指向 &a[1]。 >>>More
如果檔案比較大,則將檔案的最後一部分(例如1000個字)放入陣列中,然後進行比較。 發現''(ASC程式碼13回車)可以註明位置。