未初始化的指標

2022-08-05 15:03:23 字數 714 閱讀 2540

1.我們定義了乙個指標,一定要初始化,比如 int* a,沒有初始化時,a的指向是不明確的。若它指向非法位址,這時的操作會報異常;若它指向乙個合法位址,這是非常危險的,因為這樣可能更改乙個正在使用的數值。若在mcu中,指標指向非法位址,程式會跑飛。

2.關於null指標,有時我們會寫乙個函式,這個函式返回乙個值,但有時這個值可能會不存在,那麼就需要返回乙個代表這個值不存在的值。這樣,就會造成乙個值代表兩種不同的意思,這是違背軟體工程的原則的。這時,我們應該返回乙個bool型的變數,代表這個值是不是有效的,然後將返回的值放在指標型引數中。

3.有時我們知道位址的具體值,比如我們要往位址為100的地方存入乙個數:*100=25,但這個表示式是非法的,因為100是整型,間接訪問操作(*)只能作用於指標型別表示式,所以我們需要將100強制轉換成指標:*(int*)100=25,在mcu中,我們經常可以看到

#define adc0_base         (0x40002000ul) /**< adc0 base address  */

#define adc0 ((adc_typedef *) adc0_base) /**< adc0 base pointer */

其中adc0_base是乙個unsigned long型別的常量,我們將這個常量轉換成adc_typedef型別的指標,那麼,在以後的程式設計中,我們就可以使用adc0這個指標了:adc0->reg0,「->」是用於指標訪問

未初始化指標

今天碰到個未初始化指標的問題。大意如下 class a public b m pb class b blah,blah,blah void func a pa b pb new b 初始化pb.pa m pb pb std vector a aptrs apters.push back pa fun...

未初始化指標問題

c和指標 書上說 int a a 12 這樣寫宣告乙個變數,但未對指標初始化 如果指標是函式的形參,比如 void func int a 樓主,你應該理解清楚什麼是指標 通俗的講,指標是乙個位址,指標的初始化就是讓指標指向乙個確定的位址。是指標的解引用符,意思是取指標指向的位址裡的資料。因此,int...

未初始化和非法的指標

下面這個 說明了乙個極為常見的錯誤 int a a 12 警告 究竟a應該指向 我們宣告了這個變數,但從未對它進行初始化,所以我們沒有辦法 12這個值儲存於什麼地方。從這一點看,指標變數和其他變數並無區別,如果變數是靜態的,它會被初始化為0.但如果變數是自動的,它根本不會被初始化。無論哪種情況,宣告...