久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2256|回復: 0
打印 上一主題 下一主題
收起左側

void ,NULL及0的區別聯系

[復制鏈接]
跳轉到指定樓層
樓主
ID:250451 發表于 2017-11-18 09:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
void的詳解:

void的字面意思是“無類型”或“空類型”,void*則為“無針型指針”,那就意味著void*可以指向任何類型的數據。

眾所周知,如果指針p1和p2的類型相同,那么我們可以直接在p1和p2間互相賦值,不會出現問題;但如果p1和p2指向不同的數據類

型,則必須使用強制類型轉換

運算符把賦值符號兩邊的類型轉換為相同類型或兼容的類型,即就是把賦值運算符右邊的指針類型轉換為左邊指針的類型。

例如:

    float *p1;  
    int *p2;  
    p1 = p2;  

其中p1= p2語句會編譯出現警告


In function ‘main’:

15:7: warning:assignment from incompatible pointer type [enabled by default]


提示我們第十五行的賦值類型不兼容

而改成p1= (float *)p2;才正確;

而void*則不同,任何類型的指針都可以直接賦值給它,無需進行強制類型轉換:

    void*p1;  
    int *p2;  
    p1 = p2;  

但這并不意味著,void*也可以無需強制類型轉換地賦給其它類型的指針。因為“無類型”可以包容“有類型”,而“有類型”則不能包容“無類型”。道理很簡

單,我們可以說“男人和女人都是人”,但不能說“人是男人”或者“人是女人”。

下面的語句編譯出錯或警告:

    void *p1;  
    int *p2;  
    p2 = p1;  

在C語言中,凡不加返回值類型限定的函數,就會被編譯器作為返回整型值處理。但是許多人卻誤以為其為void類型。例如:


    add ( int a, int b )  
    {  
    return a + b;  
    }  
    int main(int argc,char* argv[])  
    {  
    printf ( "2 + 3= %d", add ( 2, 3) );  
    }  

程序運行的結果為輸出:

2 + 3 = 5

這說明不加返回值說明的函數的確為int函數。


NULL詳解:

運行:

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

輸出:(null)

gdb調試可以看出執行int*p=NULL,p的值為0x00000000,可以看出,NULL在實際底層調用中就是0。

而NULL在C語言的stdio.h頭文件里面的定義為:

    #if!defined(NULL) && defined(__NEEDS_NULL)  
    #ifdef__cplusplus  
    #defineNULL 0  
    #else  
    #defineNULL ((void *)0)  
    #endif  
    #endif  

由此可見,在C語言中,NULL和0的值可以說是一樣的,但是為了不同目的和用途及容易識別的原因,NULL用于指針和對象中,0用

于數值

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

中,NULL并非總是和0等

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

定義

    #defineNULL 0  


但并非總是如此,也有些系統不將0地址作為NULL,而是用其他的地址。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 丁香五月网久久综合 | 国产综合久久 | 亚洲一二三区不卡 | 少妇无套高潮一二三区 | 免费日韩网站 | 爱综合| 亚洲国产精品一区二区第一页 | 国产精品美女一区二区 | 一区二区三区免费看 | 国产精品永久久久久久久www | 亚洲综合大片69999 | 亚洲成av | 国产一区二区三区网站 | 精品一区二区三区在线观看国产 | 9999在线视频 | 亚洲精品9999| 亚洲三区在线观看 | 亚洲成人在线免费 | 美女久久久久久久久 | 亚洲精品一区二区三区在线 | 天堂一区二区三区 | 国产一区二区三区在线视频 | 国产精品一区在线 | 欧美日韩亚洲国产综合 | 最新日韩av | 91 在线| 999视频 | 丁香婷婷综合激情五月色 | 国产精品国产三级国产aⅴ原创 | 97超碰免费 | 日韩精品一区二区三区中文字幕 | 精品日韩| 久久噜噜噜精品国产亚洲综合 | 久草在线在线精品观看 | 精品久久久久久久人人人人传媒 | 91精品国产色综合久久不卡98口 | 成人在线视频免费播放 | 亚洲精品一区二区三区四区高清 | 91久久国产综合久久91精品网站 | 亚洲 欧美 日韩 在线 | 国产精品亚洲综合 |