欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

c語言中的函數(shù)null C語言中的函數(shù)不可以單獨(dú)進(jìn)行編譯

C語言中NULL是什么意思?

樸素的0值或者無類型的0值(void 0)

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比墾利網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式墾利網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋墾利地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。

計(jì)算機(jī)語言中為了確定數(shù)據(jù)寬度(占用字節(jié)數(shù))以及數(shù)據(jù)編碼,一般都是有類型定義的,比如C語言中bool為8位邏輯值(單字節(jié)),int 為16位整數(shù)(雙字節(jié)),long 為32位整數(shù)(4字節(jié)),float是32位浮點(diǎn)數(shù)(4字節(jié)),double為64位浮點(diǎn)數(shù)(8字節(jié)),等等。

因此,數(shù)據(jù)類型定義了數(shù)據(jù)寬度和數(shù)據(jù)編碼,因此嚴(yán)格意義上說,一個(gè)16位整數(shù)的0與一個(gè)32位整數(shù)的0,以及浮點(diǎn)數(shù)的0都是不同的,原因是數(shù)據(jù)寬度不同,特別是浮點(diǎn)數(shù)的0不是絕對(duì)的0值,它可能是一個(gè)0.0000000000000001很小的數(shù),但是有時(shí)候我們需要一個(gè)明確的通用的或者一般意義的0值來表示無效值,比如為了表示指針未被賦預(yù)有效地址,我們?cè)O(shè)置一個(gè)0值,為了防止代碼有歧義,也為了可讀性(一看就知道表示未定義指針),所以C或者C++中都使用一個(gè)特殊定義NULL表示無效值,其本質(zhì)就是未定義具體數(shù)據(jù)類型的0值。

由于沒有定義數(shù)據(jù)類型,因此也就不具有具體數(shù)據(jù)寬度和編碼,當(dāng)NULL賦值給16位變量時(shí)就是16位全0,當(dāng)賦值給32位變量時(shí),其值就是32個(gè)全0,也不會(huì)出現(xiàn)像浮點(diǎn)數(shù)那樣產(chǎn)生精度誤差。這就是虛類型的意義,任何編譯器都認(rèn)可這種約定,這樣代碼移植的時(shí)候不會(huì)因?yàn)檐浻布h(huán)境改變而出現(xiàn)問題(CPU、編譯器改變)。

你可以在任何編譯器中,點(diǎn)擊NULL右鍵查看定義。

這里稍微解釋一下,上圖高亮部分是表示C++,也就是如果當(dāng)前語言是C++,則直接定義NULL為 0值,如果是其他(可能是C),則明確定義為 void 0,因?yàn)镃++編譯器會(huì)自動(dòng)轉(zhuǎn)換。#ifndef 宏命令表示:如果當(dāng)前環(huán)境中其他模塊還未定義NULL,這就定義它。

C語言的 NULL是什么

Null,本意是"空的,元素只有零的"意思。NULL和0的值都是一樣的,但是為了目的和用途及容易識(shí)別的原因,NULL用于指針和對(duì)象,0用于數(shù)值。

例:

#includestdo.h

int main()

{

int *p=NULL;

printf("%s",p);

}

輸出null ,單步調(diào)試可以看出執(zhí)行int *p=NULL,p的值為0x00000000,可以看出,NULL在實(shí)際底層調(diào)用中就是0。

C語言是一種計(jì)算機(jī)程序設(shè)計(jì)語言,它既具有高級(jí)語言的特點(diǎn),又具有匯編語言的特點(diǎn)。它由美國貝爾研究所的D.M.Ritchie于1972年推出,1978年后,C語言已先后被移植到大、中、小及微型機(jī)上,它可以作為工作系統(tǒng)設(shè)計(jì)語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語言,編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序。它的應(yīng)用范圍廣泛,具備很強(qiáng)的數(shù)據(jù)處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,適于編寫系統(tǒng)軟件,三維,二維圖形和動(dòng)畫,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開發(fā)。

c語言NULL是什么意思?

樸素的0值或者無類型的0值(void 0)

計(jì)算機(jī)語言中為了確定數(shù)據(jù)寬度(占用字節(jié)數(shù))以及數(shù)據(jù)編碼,一般都是有類型定義的,比如C語言中bool為8位邏輯值(單字節(jié)),int 為16位整數(shù)(雙字節(jié)),long 為32位整數(shù)(4字節(jié)),float是32位浮點(diǎn)數(shù)(4字節(jié)),double為64位浮點(diǎn)數(shù)(8字節(jié)),等等。

因此,數(shù)據(jù)類型定義了數(shù)據(jù)寬度和數(shù)據(jù)編碼,因此嚴(yán)格意義上說,一個(gè)16位整數(shù)的0與一個(gè)32位整數(shù)的0,以及浮點(diǎn)數(shù)的0都是不同的,原因是數(shù)據(jù)寬度不同,特別是浮點(diǎn)數(shù)的0不是絕對(duì)的0值,它可能是一個(gè)0.0000000000000001很小的數(shù),但是有時(shí)候我們需要一個(gè)明確的通用的或者一般意義的0值來表示無效值,比如為了表示指針未被賦預(yù)有效地址,我們?cè)O(shè)置一個(gè)0值,為了防止代碼有歧義,也為了可讀性(一看就知道表示未定義指針),所以C或者C++中都使用一個(gè)特殊定義NULL表示無效值,其本質(zhì)就是未定義具體數(shù)據(jù)類型的0值。

由于沒有定義數(shù)據(jù)類型,因此也就不具有具體數(shù)據(jù)寬度和編碼,當(dāng)NULL賦值給16位變量時(shí)就是16位全0,當(dāng)賦值給32位變量時(shí),其值就是32個(gè)全0,也不會(huì)出現(xiàn)像浮點(diǎn)數(shù)那樣產(chǎn)生精度誤差。這就是虛類型的意義,任何編譯器都認(rèn)可這種約定,這樣代碼移植的時(shí)候不會(huì)因?yàn)檐浻布h(huán)境改變而出現(xiàn)問題(CPU、編譯器改變)。

你可以在任何編譯器中,點(diǎn)擊NULL右鍵查看定義。

這里稍微解釋一下,上圖高亮部分是表示C++,也就是如果當(dāng)前語言是C++,則直接定義NULL為 0值,如果是其他(可能是C),則明確定義為 void 0,因?yàn)镃++編譯器會(huì)自動(dòng)轉(zhuǎn)換。#ifndef 宏命令表示:如果當(dāng)前環(huán)境中其他模塊還未定義NULL,這就定義它。

當(dāng)前名稱:c語言中的函數(shù)null C語言中的函數(shù)不可以單獨(dú)進(jìn)行編譯
轉(zhuǎn)載來于:http://www.chinadenli.net/article28/dddsecp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)ChatGPT云服務(wù)器移動(dòng)網(wǎng)站建設(shè)自適應(yīng)網(wǎng)站網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)