指標,野指標,空指標,賦值?

2021-07-23 03:25:41 字數 749 閱讀 8997

bug中最可怕的是野指標,那麼問題來了,野指標是什麼?是如何產生的?為什麼程式設計師會「忘記」?

昨天除錯時,我發現了乙個野指標,由此我明白了。

a的值成了亂碼,而且gcc編譯器並沒有報錯,那麼請看下面的**

那麼我們假設a是指標,一旦我們如同該**一般不讓a指向元素的話,編譯器

必然是會報錯的,那麼我們不如假設int a就是指標,那麼a=0就是指標指向空

位址的操作,也就是說int a就是在定義乙個指標,a=0就是指標在指向0位址

a++就是指標由0位址指向1位址。如果這樣來說的話,那麼一切也都能說的通

了。int a其實就是在定義乙個指標,賦值是指標在指向乙個位址。

如此看來的話,c語言就是型別和指標兩樣東西在操作。

於是,bug的產生也就順理成章了

當然,這只是我個人的一些想法,如有不對的地方請大家指正。

空指標與野指標

首先什麼是空型別呢,空型別就是void,自然,空型別指標就是void void 可以指向任何型別物件的位址,表示這是乙個指標,和位址值有關,但不知道儲存在此位址上的物件的型別,所以在取空型別指標所指向的值的時候,應將空型別指標轉換為對應的指標型別 int a 10 char b a float c ...

c 空指標,野指標

當給空指標所指的位址賦值時,會報錯 int p nullptr p 10 int p 野指標,未初始化int p new int delete p 刪除後不知道p指向 include using namespace std class a void a func void void test voi...

空指標和野指標

關於多次free 出現的野指標的原因 指標變數和指標變數所指的記憶體空間變數是兩個不同的概念 free 最主要釋放的指標變數所指的記憶體空間,因為記憶體資源是有限的,很寶貴,需要 利用 但是指標變數本身的值還是之前的指向,未重置成null 所以再次釋放的時候,指向了未知的記憶體區域,產生野指標 避免...