未初始化的指標

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

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,“->”是用於指標訪問

直接初始化和複製初始化

1 classtest ct1 ab 這條語句屬於直接初始化,它不需要呼叫複製建構函式,直接呼叫建構函式classtest const ch...

GDI 的初始化

注 如果包含後出現編譯錯誤,那麼看看stdafx h中有沒有定義win32 lean and mean,有的話註釋掉就ok 1 需要連結gdiplus lib 2 使用gdi 需要進行初始化,否則執行時會出現問題。 為了方便使用,我將初始化 和釋放 放到一個類中,使用時只需要定義這個類的一個glob...

ABP初始化

預設認為你手中已經有abp zero專案,當前4 6 0 ps mpa 在這裡是多頁面的意思 namespace mycompanyname...