C語言中的空指標是什麼意思?山東

2021-06-25 14:47:35 字數 3749 閱讀 7406

1樓:匿名使用者

這樣一看才知道大家對空指標的概念如此渾濁哦!!

首先:void* 這不叫空指標,這叫無確切型別指標.這個指標指向一塊記憶體,卻沒有告訴程式該用何種方式來解釋這片記憶體.

所以這種型別的指標不能直接進行取內容的操作.必須先轉成別的型別的指標才可以把內容解釋出來.

還有'\0',這也不是空指標所指的內容. '\0'是表示一個字串的結尾而已,並不是null的意思.

真正的空指標是說,這個指標沒有指向一塊有意義的記憶體,比如說:

char* k;

這裡這個k就叫空指標.我們並未讓它指向任意地點.

又或者char* k = null;

這裡這個k也叫空指標,因為它指向null 也就是0,注意是整數0,不是'\0'

一個空指標我們也無法對它進行取內容操作.

空指標只有在真正指向了一塊有意義的記憶體後,我們才能對它取內容.也就是說要這樣

k = "hello world!";

這時k就不是空指標了.☆

2樓:匿名使用者

就是指向null的指標唄..不做處理的指標就有可能是野指標了,就是亂指的指標了。

c語言中,空指標的使用意義是什麼?在程式設計中使用空指標會帶來什麼影響?

3樓:

語言定義中說明, 每一種指標型別都有一個特殊值—— 「空指標」 —— 它與同型別的其它所有指標值都不相同, 它「與任何物件或函式的指標值都不相等」;

不要返回指向棧記憶體的指標或引用,因為棧記憶體在函式結束時會被釋放。

指標是個很強大的工具,可是正因為它太強大,所以要操作它不是件易事。操作不當造成的野指標,甚至會引起系統宕機等比較嚴重的後果。  如果程式定義了一個指標,就必須要立即讓它指向一個我們設定的空間或者把它設為null,如果沒有這麼做,那麼這個指標裡的內容是不可預知的,即不知道它指向記憶體中的哪個空間(即野指標),它有可能指向的是一個空白的記憶體區域,可能指向的是已經受保護的區域,甚至可能指向系統的關鍵記憶體,如果是那樣就糟了,也許我們後面不小心對指標進行操作就有可能讓系統出現紊亂,宕機了

4樓:

指標,太有用了,也最難管理的,好處多的是,比如,函式傳遞,引數是結構時,傳指標可以提高效能

5樓:匿名使用者

空指標的意義嘛,就是說你不應該對它進行任何讀寫操作

很多返回一個指標的函式,都會返回空指標,表示函式操作失敗,例如 fopen 在開啟檔案失敗後就返回空的檔案指標

c語言中的空指標是什麼意思?

6樓:匿名使用者

這樣一看才知道大家對空指標的概念如此渾濁哦!!

首先:void* 這不叫空指標,這叫無確切型別指標.這個指標指向一塊記憶體,卻沒有告訴程式該用何種方式來解釋這片記憶體.

所以這種型別的指標不能直接進行取內容的操作.必須先轉成別的型別的指標才可以把內容解釋出來.

還有'\0',這也不是空指標所指的內容. '\0'是表示一個字串的結尾而已,並不是null的意思.

真正的空指標是說,這個指標沒有指向一塊有意義的記憶體,比如說:

char* k;

這裡這個k就叫空指標.我們並未讓它指向任意地點.

又或者char* k = null;

這裡這個k也叫空指標,因為它指向null 也就是0,注意是整數0,不是'\0'

一個空指標我們也無法對它進行取內容操作.

空指標只有在真正指向了一塊有意義的記憶體後,我們才能對它取內容.也就是說要這樣

k = "hello world!";

這時k就不是空指標了.

7樓:匿名使用者

如果函式的引數可以是任意型別指標,那麼應宣告其引數為void *

典型的如記憶體操作函式memcpy和memset的函式原型分別為:

void * memcpy(void *dest, const void *src, size_t len);

void * memset ( void * buffer, int c, size_t num );

這樣,任何型別的指標都可以傳入memcpy和memset中,這也真實地體現了記憶體操作函式的意義,因為它操作的物件僅僅是一片記憶體,而不論這片記憶體是什麼型別。空指標僅僅是申明瞭一個變數名,告訴編譯器有個變數存在,當然你後面肯定會用到它(事實上你不用也沒人怪你)。

注意c++中語法要求更嚴格,不允許直接對空指標賦值,而必須先進行型別轉換。

8樓:藍冰_藍水

上面的錯了。其實空指標就是指值為null的指標。而且null在c和c++的定義方式也不一樣,甚至不同的編譯器也有不同的要求。

例如:define null 0 //c的定義方式

define null (void *)0 //c++的定義方式

9樓:匿名使用者

指標沒有指向任何東西

空指標指的就的'\0'!

10樓:匿名使用者

指標沒有指向任何東西

11樓:匿名使用者

空指標指的就的「0」!

12樓:你是臥底

char* k 不能算空指標吧

c語言 空指標

13樓:

空指標是其值為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存在的意義。

14樓:

int *p;p=&a空指標也分配了空間它裡面是隨機的碼,我認為int *p和int*p=null是一樣的。p=n就是p和n都指向了一個n內的隨機數。

15樓:魂歸紅魔

個人理解,在c語言中空指標是指向null的指標,而在c++中則是指向地址為0的指標,雖然在實際應用中,基本一致,但是還是有點差別。另外,空指標本身是有地址的。在c++中是一樣的,在c中就變成了null==null的問題了,這就是仁者見仁智者見智的問題。

c語言中null什麼意思

16樓:

在c語言中,

抄null和0的值都是一樣的,但是為了目的和用途及容易識別的原因,null用於指標和物件,0用於數值

對於字串的結尾,使用'\0',它的值也是0,但是讓人一看就知道這是字串的結尾,不是指標,也不是普通的數值

在不同的系統中,

null並非總是和0等同,null僅僅代表空值,也就是指向一個不被使用的地址,在大多數系統中,都將0作為不被使用的地址,所以就有了類似這樣的定義

#define null 0

但並非總是如此,也有些系統不將0地址作為null,而是用其他的地址,所以說,千萬別將null和0等價起來,特別是在一些跨平臺的**中,這更是將給你帶來災難。

17樓:匿名使用者

null,值為0,一般在c語言中表示空指標

18樓:匿名使用者

#define null 0

c語言中dt什麼意思C語言中t是什麼意思?

c語言中 d 是格式字元,意思是資料以十進位制整數形式輸出 t 是轉義字元,意思是水平製表 跳到下一個tab位置 在c語言中還有其它格式字元,o 意思是以八進位制整數形式輸出 x 意思是以十六進位制整數形式輸出 c 意思是以字元形式輸出 s 意思是以字串形式輸出。等等 在c語言中還有其它轉義字元,n...

c語言中的input是什麼意思,C語言中的input是什麼意思

input屬於printf 函式中的來式樣化字元源串,將輸出結果格式化並將輸入的引數返回到程式中。printf 函式用於向準則輸出裝置按規定式樣輸出訊息。正在編寫步驟時經常會用到此函式。printf 函式的挪用式樣為 printf 式樣化字串 參數列 式樣化字串包含了要被寫入到標準輸出 stdout...

c語言中fun是什麼意思,C語言中funa,b是什麼意思

就是個自定義標抄識符,通常用襲作自定義函式bai的函式名,是函式dufunction這個詞的開頭字zhi母。通常舉dao例子的時候,不知道該叫什麼名了,就取名fun或func或function。前幾年我回答過這種問題,結果題主採納的是一幫胡扯答案的。這次我就看看還有沒有睜眼說瞎話胡扯的。c語言中fu...