① java空指針引用!
如果你聲明了一個變數,當你引用的時候,這裡面沒有內容,當然會報異常了,空指針異常就是有地址,但是地址裡面沒有內容,舉個例子,你去你同學的家裡,他告訴你地址了,但是你去了裡面是空房子,,就是這么一個意思了。。不知道你能明白不。。。。
② C語言NULL指針問題
不知道你用的系統和GCC的版本是什麼?在我所使用的LINUX工作站以及FREEBSD工作站上均未出現此問題,輸出均為"(null)"字元串,在soliras系統上測試,兩個結果均為段錯誤,沒有出現你所說的現象。
出現段錯誤的原因有:
1、 引用一個包含非法值的指針、例如空指針。
2、 未得到正確的許可權的時候進行訪問,例如往只讀的內存地址寫數據。
3、 內存越界,例如數組越界,變數類型不一致等。
所以這個程序出現段錯誤問題很明顯是由第一原因引起的,而程序輸出(null)個人認為應該是GCC所做的優化處理。
③ 什麼是空指針異常
所謂的空指針異常,就是一個指針是空指針,你還要去操作它,既然它指向的是空對象,它就不能使用這個對象的方法。比如上面的s假如為null,你還要用s的方法,比如s.equals( String x);那麼就會產生空指針異常。
產生空指針異常的原因:
(1) 當一個對象不存在時又調用其方法會產生異常 obj.method() // obj對象不存在
(2) 當訪問或修改一個對象不存在的欄位時會產生異常 obj.method() // method方法不存在
(3)空指針引用不應該被訪問擴展閱讀:
空指針正常工作意義:
在許多語言,這不是一個單獨的轉義序列,而是八進制轉義序列,單個八進制數字為0;因此,『 』不能跟隨任何數字0通過7;否則它被解釋為更長的八進制轉義序列的開始。被在使用中發現各種語言的其他轉義序列 00,x00,z,或的Unicode表示u0000。
表示空字元的能力並不總是意味著生成的字元串將被正確解釋,因為許多程序將認為null作為字元串的結尾。因此,鍵入它的能力(在未經檢查的用戶輸入的情況下)會創建一個稱為空位元組注入的漏洞,並可能導致安全漏洞。
空字元以逗號表示是^@。在Windows上,可以通過按住Ctrl鍵,然後按@(這通常需要同時按下⇧ Shift並按下數字2鍵)。
參考資料:網路——空指針
④ c++中空指針對象訪問成員問題
我這么說吧。因為fun3函數里沒有直接或間接用到this指針。
什麼叫直接?你寫了 this 在裡面,並且這個this被訪問了。
什麼叫間接?你沒直接寫 this 但是用了成員變數等。
因為C++編譯的時候,fun3是靜態綁定的,所以運行的時候沒有「查找對象上的fun3函數」的過程,對象有沒有存在也不影響。
你可以嘗試一下把fun3改成虛擬函數(virtual),這樣調用過程就變成動態綁定,它就會出錯了
⑤ C語言中,空指針的使用意義是什麼在編程中使用空指針會帶來什麼影響
語言定義中說明,每一種指針類型都有一個特殊值——「空指針」——它與同類型的其它所有指針值都不相同,它「與任何對象或函數的指針值都不相等」;
不要返回指向棧內存的指針或引用,因為棧內存在函數結束時會被釋放。
指針是個很強大的工具,可是正因為它太強大,所以要操作它不是件易事。操作不當造成的野指針,甚至會引起系統死機等比較嚴重的後果。
如果程序定義了一個指針,就必須要立即讓它指向一個我們設定的空間或者把它設為NULL,如果沒有這么做,那麼這個指針里的內容是不可預知的,即不知道它指向內存中的哪個空間(即野指針),它有可能指向的是一個空白的內存區域,可能指向的是已經受保護的區域,甚至可能指向系統的關鍵內存,如果是那樣就糟了,也許我們後面不小心對指針進行操作就有可能讓系統出現紊亂,死機了