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語言,執行以下程式段後...