c語言裡null是空值的意思麼?那賦空值有什麼用

2021-03-22 05:28:32 字數 6717 閱讀 9857

1樓:蒼老師的戀愛

如果宣告一個指標變數,但你又暫時不知道為什麼值時,如果不初始化為null,

那麼它指向一個未知的地址,

如果對其指向的變數進行操作的話可能造成 段錯誤 或者對不該操作的的變數執行了操作,

這就是所謂的野指標

2樓:匿名使用者

null 只是一個巨集定義,用於標識空值或者0(c裡面的話其實就是等於0),在**中一般用來檢查某些值是否等同 0。用一個常量來儲存一個固定值然後在**中使用這個常量或者巨集而不是含義不明的數值是良好的變成習慣。會大大提高**的可讀性和可維護性。

3樓:匿名使用者

null的定義如下

#define null 0

所以它代表0,用於初始化

4樓:衡陽仲孫娜蘭

null在32位作業系統的記憶體中的表現就是0x00000000

0000

0000

0000

0000

0000

0000,即32位都為0,其值其實為0

所以,有

inti=0;

//讓i為null

charc=

'\0';

//'\0'在記憶體中的表現也為一串0,等價與0和null

c語言中怎樣給整型和字元型賦空值(null)

5樓:匿名使用者

空值這個概念實際上只是針對指標而言的。整型資料和字元的空值實際上就是一個預設值。整型資料的預設值是0,字元型資料的預設值是『\0』

6樓:匿名使用者

null在32位操抄作系統的記憶體中的襲表現就是0x0000 0000 0000 0000 0000 0000 0000 0000,即32位都為0,其值其實為0

所以,有

int i = 0; //讓i為null

char c = '\0'; //'\0'在記憶體中的表現也為一串0,等價與0和null

7樓:享耳三告

int a=null

char a='null'

,阿克斯碼 上null就代表空值

8樓:匿名使用者

null的值為0

int a=0;

char s=;

c語言中null有什麼作用?具體用法是什麼?

9樓:

null

其實就是

#define null 0

也就是說它就是0

不過是寫**的時候為指標什麼的賦值或判斷指標是否為空時看起來直觀一些

10樓:匿名使用者

null 屬性指定陣列或指標值是否可以為 null。

pre 和 post 特性上允許此屬性,此屬性只能應用於陣列或指標資料型別。

必須通過使用下列值之一來設定 null 屬性:

sa_yes - 此值為 null。

sa_no - 此值不為 null。

sa_maybe - 此值可以為 null。

注意 sa_ 字首對於 c++ 是可選的。

示例下面的**演示如何使用 null 屬性:

以帶有顏色區分的格式檢視複製到剪貼簿列印// c#include

void f([sa_pre(null=sa_no)] char** pc);

// c++

#include

using namespace vc_attributes;

void f([pre(null=no)] char** pc);

11樓:匿名使用者

在stdio.h(或iostream)中定義:#define null 0

作用就是初始化,int a;編譯器會賦一個不可預知的值,int a = null; a就是0。同理是指標,而且尤其是指標。一個空指標(int* p = null;)比一個野指標(int *p;)要安全的多。

在很多書籍中都提倡使用前後的指標都要賦null。

12樓:匿名使用者

null就是空的意思,一般為0

13樓:匿名使用者

為空,或預設值,不用賦值

c語言中null是什麼意思

14樓:

在c語言中,

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

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

在不同的系統中,

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

#define null 0

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

15樓:匿名使用者

null 就是一個特殊的指標值, 其實本質是一個巨集#define null (void *)0也就是0值, 強制轉成了指標。

用來表示一個指標非法。 所以在初始化的時候經常用null來初始化。

由於是非法指標, 所以對這個指標取值(*操作)會導致程式崩潰。 必須要先指向一個有效空間才可以。

16樓:匿名使用者

c語言null定義,定義如下:

#undef null

#if defined(__cplusplus)#define null 0

#else

#define null ((void *)0)#endif

所以我覺得,如果一個指標被賦予null,應該就相當於這個指標執行了0x0000這個邏輯地址,但是c語言中0x0000這個邏輯地址使用者是不能使用的(有些人說是因為0x0000沒有對映到實體地址,也有人說是因為0x0000對映到的地址是作業系統用於判斷野指標的,我也不太懂,總之就是使用者不能使用啦),所以當你試圖取一個指向了null的指標的內容時,就會提示段錯誤,聽著有點繞,看程式:

int *node=null;

int a=0;

a=*node;

printf("%d\n",a);

由於node執行的是null,也就是邏輯地址0x0000,而這個地址用於是不能訪問的,所以編譯器提示段錯誤。

17樓:樂跑小子

在標頭檔案 中 定義的一個常量 null=0;

用於指將指標 懸空(不指向任何位置)樓上的指向0記憶體不對的.

int *p=null;

null是個好東西,給一出生的指標一個安分的家

null不是被定義為0,就是被定義為(void *)0,這兩種值幾乎是相同的。當程式中需要一個指標時(儘管編譯程式並不是總能指示什麼時候需要一個指標),一個純粹的零或者一個void指標都能自動被轉換成所需的任何型別的指標。

null總是等於0嗎?

對這個問題的回答與「等於」所指的意思有關。如果是指「與。比較的結果為相等」,例如:

if(/* ... */)

else

/* ... */

if(p==0)

那麼null確實總是等於0,這也就是空指標定義的本質所在。

如果是指「其儲存方式和整型值。相同」,那麼答案是「不」。null並不必須被存為一個整型值0,儘管這是null最常見的儲存方式。在有些計算機中,null會被存成另外一些形式。

如果想知道null是否被存為一個整型值0,可以(並且只能)通過除錯程式來檢視空指標的值,或者通過程式直接將空指標的值列印出來(如果將一個空指標強制轉換成整型別,那麼=所看到的很可能就是一個非零值)。

18樓:育知同創教育

null,本意是"空的;元素只有零的"意思。計算機中通常表示空值,無結果,或是空集合。

null指標是一個無型別指標,並且值為0。一個指標,擁有2個屬性--地址值和指標型別。兩者的作用是:

1,地址值標識變數的首地址(32位系統下指標的地址值佔4位元組);2,指標型別告訴編譯器,應該怎樣進行接下來的資料訪問(int型陣列和float型陣列是不同的;陣列訪問與結構體訪問也是不同的;等等)。

19樓:66666順心

空的意思,其實不太好說明白!如果分配記憶體分配失敗如:

#include

#include

int main()

如果分配記憶體分配失敗,malloc函式就會返回一個null給p

20樓:陽光沒有眼睛

可以的null別定義為

#define null ((void *)0)

'\0'是字元,ascii是0

21樓:匿名使用者

c語言中null的意思就是空格的意思,用到的很多

22樓:高金山

#define null ((void*)0)

其值是0,但意義是空指標

'\0'的值也是0,但意義是字串結束符

23樓:匿名使用者

是空指標,指向地址為0的記憶體,在用法上,常用來表示不存在,例:if((fp=fopen("stu","rb"))==null)exit(0);

解析:如果開啟的這個名為stu的檔案不存在,就退出程式;

24樓:匿名使用者

null的定義是:

#define null (*(void*)0)簡而言之就是一個打包過的0.

while後面應該填寫

'\0' != *p

因為按照習慣,*p是一個字元變數.

但是你填

null != *p

或者就是

*p都可以.

25樓:匿名使用者

反正null就是0,一般用來形容指標是空的.

至於你說的null == '\0' , 只是因為'\0'也是數值0而已

26樓:匿名使用者

null, 大寫,有這樣一個定義: #define null 0 你能看到? 看vc裡邊應該能看到如果沒有小寫null,你也可以這樣:

#define null 0 這樣就可以,呵呵。

c語言 一個指標值加上一個整型值是什麼意思?

27樓:

設指標是p,「bai整型值」是n,那麼p+n表示du指標p的指向向後zhi移動了n個p所指

dao向的元素所佔有

專的空間值,即指向向後移動屬了n個元素。比如:char *p="1234567890";,則p+4指向了5,若'1'的地址是2000,那麼p+4就是2004;若int x=,*p;,則p+4也指向了5,但若1的地址仍是2000,p+4就是2000+4*4=2016了,因為一個int元素要4個位元組存放。

28樓:千鋒教育

可以相加 ,表示移動

來到這個自

陣列的最後一位 ,這裡bai需要說到的是指標移位的du方式是zhi: 位數*型別大小

比如 int a[3]=

int *p=a;

p=p+2;//實際是 p+2*sizeof(int)printf("%d\n",*p);//最後會打dao印3,即a[2]的值

29樓:匿名使用者

可以抄相加啊,指標加整數表示指標bai移動,相應型別所佔記憶體du單位大小zhi 乘 整數值

譬如 int num = 9;

int* p = #

假設, p 現在存dao有地址 0x1002,int型別為2位元組則 p + num 就等於 0x1002+2*9 = 0x1020

30樓:匿名使用者

感覺像是陣列首地址加上腳標,

基址+長度應該等於連結串列中具體的某一節

c語言中是null什麼意思?

31樓:農連枝彌雀

在標頭檔案

中定義的一個常量

null=0;

用於指將指標

懸空(不指向任何位置)樓上的指向0記憶體不對的.

int*p=null;

null是個好東西,給一出生的指標一個安分的家

null不是被定義為0,就是被定義為(void

*)0,這兩種值幾乎是相同的。當程式中需要一個指標時(儘管編譯程式並不是總能指示什麼時候需要一個指標),一個純粹的零或者一個void指標都能自動被轉換成所需的任何型別的指標。

null總是等於0嗎?

對這個問題的回答與「等於」所指的意思有關。如果是指「與。比較的結果為相等」,例如:

if(/*

...*/)

else

/*...

*/if(p==0)

那麼null確實總是等於0,這也就是空指標定義的本質所在。

如果是指「其儲存方式和整型值。相同」,那麼答案是「不」。null並不必須被存為一個整型值0,儘管這是null最常見的儲存方式。在有些計算機中,null會被存成另外一些形式。

如果想知道null是否被存為一個整型值0,可以(並且只能)通過除錯程式來檢視空指標的值,或者通過程式直接將空指標的值列印出來(如果將一個空指標強制轉換成整型別,那麼=所看到的很可能就是一個非零值)。

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

空指標是其值為null或0的指標,在下認為稱之為 指向 null或 指向 0的指標都是錯誤說法,因為若有int a,p a 則稱指標p指向了a,並不能說指標p指向了 a,只能說p的值是 a,不然就大錯特錯了。沒有指向 即沒有賦值 或指向的目標已銷燬了的指標稱為懸浮指標 可能人們據說的野指標也是它吧 ...

c語言裡的t是什麼意思C語言C是什麼意思

樓上寫錯了,應該是 轉義字元 而不是 轉移字元 轉義字元是一種特殊的字元常量。轉義字元以反斜線 開頭,後跟一個或幾個字元。轉義字元具有特定的含義,不同於字元原有的意義,故稱 轉義 字元。例如,在前面各例題printf函式的格式串中用到的 n 就是一個轉義字元,其意義是 回車換行 轉義字元主要用來表示...

c語言執行以下程式段後m的值是,C語言,執行以下程式段後,m的值是。staticinta7,4,6,3,10intm,k,ptr

答案 d 分析 ptr a 0 指標bai指du向陣列首地址zhi,ptr k 指標指向陣列第k個存 dao儲單元 m ptr k 等價於專 m a k 屬a k 與m的最小數並賦值給m 故此程式段是去陣列a中元素的最小值 如還有不懂的地方可以密我 d 3 陣列a中的最小值 c語言,執行以下程式段後...