c語言中,空指標申請了記憶體但未賦值,它還是空指標麼

2021-04-12 07:18:53 字數 1607 閱讀 7359

1樓:匿名使用者

這裡的表達很不清楚。

申請記憶體時實際就是從內(的堆)中,指定沒

有使用版的一塊區域來存權儲某個資料,區域的大小也就是位元組數在申請時已經傳遞給了記憶體申請函式,返回的指標就是這個區域的首地址。返回的指標賦值給某個變數,以後就可以通過這個指標變數來使用(儲存或者是讀取)所分配的這一塊記憶體區域了。

所以就不清楚問題中說的空指標申請了記憶體所表達的意思。

如果還有問題,請繼續追問。

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

2樓:匿名使用者

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

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

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

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

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

char* k;

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

又或者char* k = null;

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

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

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

k = "hello world!";

這時k就不是空指標了.

3樓:匿名使用者

如果函式的引數可以是任意型別指標,那麼應宣告其引數為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++中語法要求更嚴格,不允許直接對空指標賦值,而必須先進行型別轉換。

4樓:藍冰_藍水

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

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

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

5樓:匿名使用者

指標沒有指向任何東西

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

6樓:匿名使用者

指標沒有指向任何東西

7樓:匿名使用者

空指標指的就的「0」!

8樓:你是臥底

char* k 不能算空指標吧

C語言中的空指標是什麼意思,C語言中,空指標NULL會佔記憶體嗎?多少位元組

這樣一看才知道大家對空指標的概念如此渾濁哦 首先 void 這不叫空指標,這叫無確切型別指標.這個指標指向一塊記憶體,卻沒有告訴程式該用何種方式來解釋這片記憶體.所以這種型別的指標不能直接進行取內容的操作.必須先轉成別的型別的指標才可以把內容解釋出來.還有 0 這也不是空指標所指的內容.0 是表示一...

c語言中指標加減問題,求解答C語言中指標問題真的求,搞不懂,求解答?

首先 float a 10 p,q p a 4 q a 7 那q p 2 a 4 與a 7 之間有兩個元素 這裡就不對了,q p 3 不是等於2,可以用printf d q p 看看。p 3 p 12 是地址按 位元組 排列的位置差,表示p 3和p之間有12個位元組 q p 3 表示q和p之間有3個...

判斷空指標的0與nullC語言中空指標0與NULL相同嗎

1,2是錯的bai,3,4是對的 從 的簡潔du性來說當然是zhi3最簡潔不過了,但是dao從程式的可讀性來考慮,回就是4比較答容易讓人一下子讀懂。在c 中null與0是一樣的,只是程式語言編譯的時候的語義分別 實際上都是 0 比如 c 的巨集定義檔案裡你就可以看到 if cplusplus def...