1樓:匿名使用者
c中沒有對null預定義,所以null和'\0'區別就大了:null只是個合法的使用者識別符號,而'\0'是預定義為0的字元常量。如果是null和'\0',那它們沒有區別,都被預定義為值為0的常量,所以混用它們不會產生任何問題,甚至把用它們的地方都改成0也無妨。
一般情況下,null用於使指標無效或判斷指標是否無效,'\0'則用於字串結束或判斷字串是否結束。這樣規範書寫,**的可讀性就大為提高,沒有發現有什麼別的意義。
c語言中null是什麼意思
2樓:
在c語言中,
null和0的值都是一樣的,但是為了目的和用途及容易識別的原因,null用於指標和物件,0用於數值
對於字串的結尾,使用'\0',它的值也是0,但是讓人一看就知道這是字串的結尾,不是指標,也不是普通的數值
在不同的系統中,
null並非總是和0等同,null僅僅代表空值,也就是指向乙個不被使用的位址,在大多數系統中,都將0作為不被使用的位址,所以就有了類似這樣的定義
#define null 0
但並非總是如此,也有些系統不將0位址作為null,而是用其他的位址,所以說,千萬別將null和0等價起來,特別是在一些跨平台的**中,這更是將給你帶來災難。
3樓:匿名使用者
null 就是乙個特殊的指標值, 其實本質是乙個巨集#define null (void *)0也就是0值, 強制轉成了指標。
用來表示乙個指標非法。 所以在初始化的時候經常用null來初始化。
由於是非法指標, 所以對這個指標取值(*操作)會導致程式崩潰。 必須要先指向乙個有效空間才可以。
4樓:匿名使用者
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,而這個位址用於是不能訪問的,所以編譯器提示段錯誤。
5樓:樂跑小子
在標頭檔案 中 定義的乙個常量 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,可以(並且只能)通過除錯程式來檢視空指標的值,或者通過程式直接將空指標的值列印出來(如果將乙個空指標強制轉換成整型別,那麼=所看到的很可能就是乙個非零值)。
6樓:匿名使用者
c中沒有對null預定義
,所以null和'\0'區別就大了:null只是個合法的使用者識別符號,而'\0'是預定義為0的字元常量。如果是null和'\0',那它們沒有區別,都被預定義為值為0的常量,所以混用它們不會產生任何問題,甚至把用它們的地方都改成0也無妨。
一般情況下,null用於使指標無效或判斷指標是否無效,'\0'則用於字串結束或判斷字串是否結束。這樣規範書寫,**的可讀性就大為提高,沒有發現有什麼別的意義。
7樓:育知同創教育
null,本意是"空的;元素只有零的"意思。計算機中通常表示空值,無結果,或是空集合。
null指標是乙個無型別指標,並且值為0。乙個指標,擁有2個屬性--位址值和指標型別。兩者的作用是:
1,位址值標識變數的首位址(32位系統下指標的位址值佔4位元組);2,指標型別告訴編譯器,應該怎樣進行接下來的資料訪問(int型陣列和float型陣列是不同的;陣列訪問與結構體訪問也是不同的;等等)。
8樓:66666順心
空的意思,其實不太好說明白!如果分配記憶體分配失敗如:
#include
#include
int main()
如果分配記憶體分配失敗,malloc函式就會返回乙個null給p
9樓:陽光沒有眼睛
可以的null別定義為
#define null ((void *)0)
'\0'是字元,ascii是0
10樓:匿名使用者
c語言中null的意思就是空格的意思,用到的很多
11樓:高金山
#define null ((void*)0)
其值是0,但意義是空指標
'\0'的值也是0,但意義是字串結束符
12樓:匿名使用者
是空指標,指向位址為0的記憶體,在用法上,常用來表示不存在,例:if((fp=fopen("stu","rb"))==null)exit(0);
解析:如果開啟的這個名為stu的檔案不存在,就退出程式;
13樓:匿名使用者
null的定義是:
#define null (*(void*)0)簡而言之就是乙個打包過的0.
while後面應該填寫
'\0' != *p
因為按照習慣,*p是乙個字元變數.
但是你填
null != *p
或者就是
*p都可以.
14樓:匿名使用者
反正null就是0,一般用來形容指標是空的.
至於你說的null == '\0' , 只是因為'\0'也是數值0而已
15樓:匿名使用者
null, 大寫,有這樣乙個定義: #define null 0 你能看到? 看vc裡邊應該能看到如果沒有小寫null,你也可以這樣:
#define null 0 這樣就可以,呵呵。
c語言中是null什麼意思?
16樓:農連枝彌雀
在標頭檔案
中定義的乙個常量
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,可以(並且只能)通過除錯程式來檢視空指標的值,或者通過程式直接將空指標的值列印出來(如果將乙個空指標強制轉換成整型別,那麼=所看到的很可能就是乙個非零值)。
17樓:封玉蓉墨妝
樓上說的都對,看來你是新手,建議你去看林銳的《高質量c++》,這本書,你一定會喜歡的,因為他對於入門者來說特別好,他會給你講正確的程式設計規範是什麼。其中那塊講指標的部分就寫了,定義指標,一般先給初始化,用null來初始化它,避免野指標。你這裡說的int*p,這個p裡面是隨機值,而int*p=null,這個p是有值的,為null.
這其實對程式也沒有啥貢獻,在後面你也可以隨時讓這個p指向別的位址。定義指標,順便將它初始化為null,這樣做程式設計更規範。
18樓:逄德覃癸
在c語言中,null和0的值都是一樣的,但是為了目的和用途及容易識別的原因,null用於指標和物件,0用於數值。對於字串的結尾,使用'\0',它的值也是0,但是讓人一看就知道這是字串的結尾,不是指標,也不是普通的數值。
拓展資料:
關於null的使用
程式設計工作中有一模擬較容易犯的錯誤--指標位址未進行正確的更新賦值就加以使用,這往往會造成很嚴重的後果(對記憶體區進行錯誤的塗抹)。所以乙個良好的習慣是,當乙個指標的工作稍事休息,先把它賦值為null,待到再度使用時,重新對其賦值以及進行指標型別轉化。
前面說到"null指標無法再進行任何資料訪問",其實是視編譯器功能而定的。0位置指向的是程式起始,對於不同的編譯器,null指標的操作結果是不同的:有些是不准讀寫,有些是唯讀,甚至讀寫都允許。
編譯器是人定的。
19樓:全松蘭柴珍
c語言null定義,定義如下:
#undef
null
#ifdefined(__cplusplus)#define
null
0#else
#define
null
((void
*)0)
#endif
所以我覺得,如果乙個指標被賦予null,應該就相當於這個指標執行了0x0000這個邏輯位址,但是c語言中0x0000這個邏輯位址使用者是不能使用的(有些人說是因為0x0000沒有對映到實體地址,也有人說是因為0x0000對映到的位址是作業系統用於判斷野指標的,我也不太懂,總之就是使用者不能使用啦),所以當你試圖取乙個指向了null的指標的內容時,就會提示段錯誤,聽著有點繞,看程式:
int*node=null;
inta=0;
a=*node;
printf("%d\n",a);
由於node執行的是null,也就是邏輯位址0x0000,而這個位址用於是不能訪問的,所以編譯器提示段錯誤。
在c語言中,在C語言中ch c A a 是什麼意思,其中ch和c是字元
在c語言中ch c a a 的意思是,是把表示大寫字母的變數c轉換為小寫字母的語句,使用前一般要先判斷一下的,如下 if c a c z ch c a a 因為當c b 時,c a 就等於1,然後1 a 就是 b 如果事先不檢測的話,當c不是大寫字母時作這樣的轉換是會無法理解的。在c語言中ch c ...
x y在c語言中什麼意思,C語言中, x y z, x y z的意思分別是什麼?
是邏輯與 x y當x與y都為真時,結果為真 1 否則為假 0 x和y都為bai非零值時 du x y 為真 1 任意乙個為零,zhi或都為零時,x y 為假 0 為邏輯與操作 dao符。x和z有乙個為真 非零 時,或 內都為真時,x z 為真 1 只有x和z都為零時,x z 才為假 0 為邏輯或操作...
在c語言中,func是什麼意思,在C語言中,FUNC是什麼意思?
沒有特別的意思 可能是程式中定義的乙個巨集 也許 func就是空白 只是起到標記的含義 func 是你自己定義的函式的名字。例 void func1 int i 其中void指的是返回值型別是空,預設情況下指的是int型,func1是你定義的函式名,int i是你定義乙個形式引數,型別是整型的 我隱...