1樓:匿名使用者
野指標就是不知道指向**,或者說不知道指向的記憶體是否可以使用,一般都是剛剛宣告但沒有初始化的指標。
空指標不是指向常數0,只指向地址0,即null,其實換句話說,指標的本質就是地址嘛,空指標就是指標本身的值(地址)為0
空指標的作用是防止野指標的出現,因為我們不能知道野指標到底指向**,所以我們也無法判斷一個指標是否是野指標,這樣很危險,但如果養成將指標初始化為空指標的習慣,我們就能判斷出這個指標是不是有效的(判斷是不是null就可以了)
通用指標一般都用在函式傳參,實現所謂的“多型”,但到函式裡面使用時,一般還是被轉換成具體型別的指標。
2樓:匿名使用者
首先空指標並不是指向0的指標,空指標是什麼,就是一個被賦值為0的指標,在沒有被具體初始化之前,其值為0.
所以指標沒有指向常數0,它指向的儲存空間是null,暫時為0.
c語言 空指標
3樓:
空指標是其值為null或0的指標,在下認為稱之為“指向”null或“指向”0的指標都是錯誤說法,因為若有int a,*p=&a;,則稱指標p指向了a,並不能說指標p指向了&a,只能說p的值是&a,不然就大錯特錯了。沒有指向(即沒有賦值),或指向的目標已銷燬了的指標稱為懸浮指標(可能人們據說的野指標也是它吧)。int *p=null,*n=null,p=n是不是有意義呢?
單純看這裡是沒有意義的,但指標是變數,如果保證指標n不變化且是null,那n就是空常指標,一點意義都沒有。否則的話p=n保證在生存期間指標p是跟隨n變化的。這就是p=n存在的意義。
4樓:
int *p;p=&a空指標也分配了空間它裡面是隨機的碼,我認為int *p和int*p=null是一樣的。p=n就是p和n都指向了一個n內的隨機數。
5樓:魂歸紅魔
個人理解,在c語言中空指標是指向null的指標,而在c++中則是指向地址為0的指標,雖然在實際應用中,基本一致,但是還是有點差別。另外,空指標本身是有地址的。在c++中是一樣的,在c中就變成了null==null的問題了,這就是仁者見仁智者見智的問題。
c語言中,空指標的使用意義是什麼?在程式設計中使用空指標會帶來什麼影響?
6樓:
語言定義中說明, 每一種指標型別都有一個特殊值—— “空指標” —— 它與同型別的其它所有指標值都不相同, 它“與任何物件或函式的指標值都不相等”;
不要返回指向棧記憶體的指標或引用,因為棧記憶體在函式結束時會被釋放。
指標是個很強大的工具,可是正因為它太強大,所以要操作它不是件易事。操作不當造成的野指標,甚至會引起系統宕機等比較嚴重的後果。 如果程式定義了一個指標,就必須要立即讓它指向一個我們設定的空間或者把它設為null,如果沒有這麼做,那麼這個指標裡的內容是不可預知的,即不知道它指向記憶體中的哪個空間(即野指標),它有可能指向的是一個空白的記憶體區域,可能指向的是已經受保護的區域,甚至可能指向系統的關鍵記憶體,如果是那樣就糟了,也許我們後面不小心對指標進行操作就有可能讓系統出現紊亂,宕機了
7樓:
指標,太有用了,也最難管理的,好處多的是,比如,函式傳遞,引數是結構時,傳指標可以提高效能
8樓:匿名使用者
空指標的意義嘛,就是說你不應該對它進行任何讀寫操作
很多返回一個指標的函式,都會返回空指標,表示函式操作失敗,例如 fopen 在開啟檔案失敗後就返回空的檔案指標
c語言行指標和列指標,C語言行指標和列指標
在任何時候 抄都不能定址,它是用bai來取地址的.p i 在任du何時候zhi 都等價dao於 p i p i j 其中p是int x 型別的 在任何時候都等價於 i x j x是一個變數.int a 10 20 這裡x 20 int a 20 10 這裡x 10 c語言沒有什麼行指標,列指標.一維...
C語言指標
正如您所說 a是一個常量,常量是不能修改的變數。不可以修改,不代表不可以引用呀,a i 只是借用a的值 陣列的首地址 來訪問其他成員,實際上並沒有改變a的值。但是換成a 執行之後a的值就改變了,被修改了,編譯當然通不過啦。這道題中的a是陣列的首地址,要是改變a的值,那陣列不是也改變了嗎?所以,一定是...
c語言指標
1 c 3 超過陣列範圍了,陣列下標從0開始,c 0 c 1 c 2 2 pc 3 也超過範圍了啊 3 c 指向c 1 這個值 應該是這個正確吧 4 c已經是陣列第一個元素的地址了,c再取地址又亂套了 pc c當然不可以寫成pc c了,那樣意義全變了。可以拆成兩句 char c 3 char pc ...