用vb.net 敲三層的時候,遇到了乙個素未相識的錯誤:
變數「db」在賦值前被使用,可能會在執行時導致null引用異常
源自:
dim db as loginmodel.dbutil
using conn as new sqlconnection(db.connstring)
這是資料訪問層中scoredao類中的**,在userdao類中也有類似的**:
dim db as new loginmodel.dbutil
using conn as new sqlconnection(db.connstring)
而且我把上面的這段**複製到scoredao中系統就不再提示該錯誤了;
ctrl+f查詢 該解決方案下所有的「db」,也沒有發現它有被使用過的痕跡,這是怎麼回事?上網查吧
很快就找到了答案:
了解空指標之前先說說什麼是指標吧。在電腦科學中,
指標(pointer)是程式語言中的乙個物件,利用
位址,它的值指向存在儲存器中另乙個地方的值,即
位址指向所需的變數單元
;將位址形象化的稱為"指標";
個人理解:指標起著乙個「指引」的作用;
不同的領域對指標也有著不同的定義,詳解。
指標可以用來
有效地表示複雜的資料結構
,可以用於函式引數傳遞並達到更加
靈活使用函式
的目的.使c語言程式的設計靈活、實用、高效;
指標不僅僅是
c語言的靈魂
,運用得好更是事半功倍,讓你寫出的程式更簡潔。
指標的值不能是整型值
,但空指標是個例外,他的值可以是乙個純粹的零(並不必須是純粹的零,但這個值是唯一有用的值。
在編譯時產生的任意乙個表示式,只要它是零,就可以作為空指標的值,
在程式執行時,最好不要出現乙個為零的整型變數)。
它並不指向任何物件,
空指標的值是null
,null是乙個純粹的零,它可能會被強制轉換成void*或char*型別。即null可能是0,0l或(void*)0等。有些程式設計師,尤其是c++程式設計師,更喜歡用0來代替null;而在
一般的文件中傾向於用 null 表示,而沒有直接說成 0。但是對於指標型別來說,返回 null 和 返回 0 是完全等價的,因為 null 和 0 都表示 "null pointer"(空指標)。一句話, 空指標就是乙個
被賦值為0的指標
,在沒有被具體初始化之前,其值為0.
null在c和c++的定義方式也不一樣
,甚至不同的編譯器也有不同的要求,如:
define null 0 //c的定義方式
define null (void *)0 //c++的定義方式
網頁問答上說這個空指標常量還關涉到自動裝箱、自動拆箱這部分內容,本菜鳥表示不懂,但是先介紹一下再說:
將基本資料型別封裝為物件型別。
當我們建立乙個integer物件時,可以這樣:
integer i = 100; (不是 int i = 100; )
實際上執行該段**的時候,系統為我們執行了:
integer i = integer.valueof(100);
此即基本資料型別的
自動裝箱
功能。基本資料型別不是物件,其沒有可呼叫的方法。int t = 1;t.後面是沒有方法的。integer t =1; t. 後面就有很多方法可讓你呼叫了。
也就是將物件中的
基本資料從物件中自動取出
。intt =
i; 實際上執行了 int t = i.intvalue();
對已說明的變數來說,變數名就是對變數值的
直接引用
。對指向變數或記憶體中的任何物件的指標來說,指標就是對物件值的間接引用。如果p是乙個指標,p的值就是其物件的位址
;*p表示「使間接引用運算子作用於p
」,*p的值就是p所指向的物件的值。
不妥之處歡迎交流。共同進步。
c c 中空指標,空指標常量,NULL
如何是乙個指標變數成為空指標 如果 p 是乙個指標變數,則 p 0 p 0l p 0 p 3 3 p 0 17 中的任何一種賦值操作之後 對於 c 來說還可以是 p void 0 p 都成為乙個空指標,由系統保證空指標不指向任何實際的物件或者函式。null 是乙個標準規定的巨集定義,用來表示空指標常...
常量指標 指標常量
int const p 表示p是乙個指向常量的指標,這種情況下,編譯器會講p所指向的物件當作常量處理,即便不是常量。所以無法改變其指向的物件的值,但是指標本身的值即其指向可以發生改變。int const p 表示指標是乙個常量,其本身值 即其指向 不可以修改,但是其指向的值 無論是常量還是變數 可以...
指標常量 常量指標
指標常量 指向常量的指標 const int pa int const pa 兩者等價。因為指向常量的指標有時候會指向常量,所以它具有這個性質 不能靠解引用改變它指向的物件的值 以此保護它所指向的常量的常量性。pa d 不可行 d是已經宣告過的整型 但指標本身的值是可變的 pa d 可行 d是已經宣...