void ,NULL與0的區別聯系

void ,NULL0的區別聯系

void的詳解:

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

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

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

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

例如:

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

NULLC語言的stdio.h頭文件里面的定義為:

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

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

于數值

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

中,NULL并非總是和0

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

定義

#defineNULL 0

但并非總是如此,也有些系統不將0地址作為NULL,而是用其他的地址。


轉載于:https://www.cnblogs.com/csdndreamer/p/5490656.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397755.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397755.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397755.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python 2 days

1&#xff0c;格式化輸出&#xff0c;%s %d 2&#xff0c;復習昨日講題 編譯型&#xff1a; 將代碼一次性全部編譯成二進制&#xff0c;然后運行。 優點&#xff1a;執行效率高。 缺點&#xff1a;開發效率低&#xff0c;不能跨平臺。 C解釋型&#xff1a; 代碼…

nginx編譯安裝與配置使用

第一部分----nginx基本應用源碼編譯安裝nginx1、安裝pcre軟件包&#xff08;使nginx支持http rewrite模塊&#xff09;yum install -y pcre yum install -y pcre-devel2、安裝openssl-devel&#xff08;使nginx支持ssl&#xff09;yum install -y openssl-devel3、創建用戶ngin…

ubuntu+查看服務器文件夾權限,Ubuntu - 文件夾權限查看與修改

Ubuntu 文件的歸屬身份有四種&#xff1a;u - 擁有文件的用戶(所有者)g - 所有者所在的組群o - 其他人(不是所有者或所有者的組群)a - 每個人或全部(u, g, o)1. 查看文件/文件夾權限ls -l filename # 查看文件權限ls -ld folder # 查看文件夾權限輸出結果如&#xff1a;drwxrwx…

mysql dump 1449_跨版本mysqldump恢復報錯Errno1449

已經有一套主從mysql,新增兩個slave主庫Server version: 5.6.22-log MySQL Community Server (GPL)舊從庫Server version: 5.6.28-log MySQL Community Server (GPL)新增SLAVE 1&#xff1a; Server version: 5.6.22-log MySQL Community Server (GPL)新增SLAVE 2&#xff1a; …

修復 Xcode 錯誤 “The identity used to sign the executable is no longer valid”

如圖&#xff1a; 解決方法來自&#xff1a;http://stackoverflow.com/questions/7088441/the-identity-used-to-sign-the-executable-is-no-longer-valid/14275197 Restarting Xcode didnt work for me. What fixed it for me was going to Accounts in Xcode (in preferences…

centos設置ip

這里是centos7.vmware安裝centos后需要設置ip 1.首先查看虛擬機的網絡適配器信息 2.根據信息修改配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33 圖為修改后的,最初的配置為 BOOTPROTOdhcp ONBOOTno IPADDR,GATEWAY,NETMASK沒有進行配置需要根據網絡適配器配置手動維…

微信支付+服務器+php代碼,php 微信支付企業付款(示例代碼)

/*** 格式化參數格式化成url參數*/public function ToUrl($arr){$buff "";foreach ($arr as $k > $v){if($k ! "sign" && $v ! "" && !is_array($v)){$buff . $k . "" . $v . "&";}}$buff trim($b…

Spark踩坑記——數據庫(Hbase+Mysql)轉

轉自&#xff1a;http://www.cnblogs.com/xlturing/p/spark.html 前言 在使用Spark Streaming的過程中對于計算產生結果的進行持久化時&#xff0c;我們往往需要操作數據庫&#xff0c;去統計或者改變一些值。最近一個實時消費者處理任務&#xff0c;在使用spark streaming進行…

解決Failed to connect session for conifg 故障

服務器升級openssh之后jenkins構建報錯了&#xff0c;報錯信息如下&#xff1a; Failed to connet or change directory jenkins.plugins.publish_over.BapPublisherException:Failed to connect session for config.....Message [Algorithm negotiation fail] 升級前ssh版本&a…

78oa mysql_78oa系統版本升級方法

可升級版本預覽升級方法&#xff1a;1、備份數據庫、附件目錄、二次開發程序打開開始菜單——控制面板——管理工具——服務&#xff0c;右鍵點擊停止 78oa mysql service 服務&#xff0c;完整復制【D:\78OA\server\modules\storage\data\78oa】(數據庫)文件夾至備份區域。完整…

Excel導出顯示服務器意外,C# 調用Excel 出現服務器出現意外狀況. (異常來自 HRESULT:0x80010105 (RPC_E_SERVERFAULT)...

C# 調用Excel 出現服務器出現意外狀況. (異常來自 HRESULT:0x80010105 (RPC_E_SERVERFAULT)htmlprivate Microsoft.Office.Interop.Excel.Application xApp;private Microsoft.Office.Interop.Excel.Workbook xBook;服務器//變量xApp new Microsoft.Office.Interop.Excel.Appl…

列表、元組、字典、集合的定義、操作與綜合練習

l[A,B,C] t{A,B,C}l.append(B)print(l)scores[66,77,88]d{A:66,B:77,C:88} d[B]99 d[D]111 d.pop(C) print(d)s1{A,B,C} s2{A,C,D} print(s1&s2) print(s1|s2) 轉載于:https://www.cnblogs.com/chenjunyu666/p/9147417.html

xargs

find /tmp/ -name "*.log" -mtime 4 | xargs -i -t mv {} /home/ find /tmp/ -name "*.log" -mtime 4 -print0 | xargs -0 rm -f xargs(1) xargs是給命令傳遞參數的一個過濾器&#xff0c;也是組合多個命令的一個工具。它把一個數據流分割為一些足夠小的塊…

export mysql home_mysql的Linux下安裝筆記

注&#xff1a;在5.7之后MySQL不在生成my-default.cnf配置。tar -xzvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gzmv mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz/ /usr/local/mysql新建 useradd mysql新建文件夾mkdir /usr/local/mysql/data生成配置&#xff1a;./mysqld -…

[轉]DevExpress GridControl 關于使用CardView的一點小結

最近項目里需要顯示商品的一系列圖片&#xff0c;打算用CardView來顯示&#xff0c;由于第一次使用&#xff0c;遇到許多問題&#xff0c;發現網上這方面的資源很少&#xff0c;所以把自己的一點點實際經驗小結一下&#xff0c;供自己和大家以后參考。 1、選擇CardView&#xf…

thinkphp5 ajax搜索+分頁

<center> <table > <tr> 水果名稱<input type"text" name"f_name" class"f_name"> 水果分類 &…

EventBus學習

EventBus是android 下高效的發布/訂閱事件總線機制&#xff0c;可以代替傳統的Intent&#xff0c;Handler&#xff0c;BroadCast 或者Fragment&#xff0c;Activity&#xff0c;Service&#xff0c;線程之間傳遞數據&#xff0c;是一種發布訂閱設計模式&#xff08;觀察者模式&…

Uediter的引用和取值

頁面應用Uediter控件&#xff0c;代碼如下&#xff1a; <tr><td align"center" class"xwnr_j"><asp: TextBox ID "txtContent" TextMode "MultiLine" Height "274px" Width "95%" runat"serv…

java程序 構建mycircle類_Java語言程序設計(十九)對象和類的應用實例

1.我們定義一個Circle類并使用該類創建對象&#xff0c;我們創建三個圓對象&#xff0c;1.0&#xff0c;25和125&#xff0c;然后顯示這三個圓的半徑和面積&#xff0c;將第二個對象的半徑改為100&#xff0c;然后顯示它的新半徑和面積。程序清單如下&#xff1a;package testc…

Django拋錯不存在(DoesNotExist)

from django.core.exceptions import ObjectDoesNotExist try:disabledusers.objects.get(sAMAccountNameliu) except ObjectDoesNotExist:print a except modelname.DoesNotExist:轉載于:https://www.cnblogs.com/dreamer-fish/p/5835465.html