日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言NULL和0区别

發布時間:2025/3/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言NULL和0区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自:http://www.cnblogs.com/youxin/archive/2012/03/27/2420023.html

先看下面一段代碼輸出什么:

#include<stdo.h> int main() {int *p=NULL;printf("%s",p);}

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

在C語言中,

NULL和0的值都是一樣的,但是為了目的和用途及容易識別的原因,NULL用于指針和對象,0用于數值


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

在不同的系統中,

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

#define NULL 0

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

看下面解釋:

問 0 '0' '\0' "\0"

?

To me, when doing C/C++:

?

0 would digit zero, that is, a numerical value.

?

'0' could be the character capital oh or the character zero. For example: char word[10] = "Oxford"; char number[10] = "01234";

?

Depending on typeface used 'O' may look exactly like '0' making it difficult to tell them apart out of context.

?

'\0' is the?null character used to terminate strings in C/C++.

?

"\0" is an empty string.

百度百科解釋;

\0是C++中字符串的結尾標志,存儲在字符串的結尾。比如char cha[5]表示可以放5個字符的字符串,由于c/c++中規定字符串的結尾標志為'\0',它雖然不計入串長,但要占內存空間,而一個漢字一般用兩個字節表示,且c/c++中如一個數組cha[5],有5個變量,分別是 cha[0] , cha[1] , cha[2] , cha[3] , cha[4] , 所以cha[5]可以放5個字母或者放2個漢字(1個漢字占2個字節,1個字母占一個字節),cha[5]占5個字節內存空間.

  例如:

char str[5];str[0]='a';str[1]='b';str[2]='c';str[3]='d';//str[4]='\0'; //abcd str[4]='e'; /*這樣輸出就是abcde和一堆亂碼,甚至跳出系統錯誤,因為沒有字符串結尾符*/printf("%s",str);

總結

以上是生活随笔為你收集整理的c语言NULL和0区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。