c語言中有關void,sizeof,結構體的一些問題

void[1]:
void是C語言中的空類型,void的用途有二。
1、對函數返回的限定;
如果函數沒有返回值,則默認返回整數類型,而不是void類型。c++有很嚴格的類型,不允許函數不加類型聲明,而編譯器則不這么認為檢查這一點在VC6.0中可以驗證。所以在編寫代碼的時候,每個函數都應該加上返回類型。
2、對函數參數的限定;
? ? ? 在c++中,函數參數為void意味著不接受參數,但是在c語言中可以給無參數的函數傳遞任意類型的參數,這點在turbo c中可以驗證。

指針的大小和機器的位數有關,在32位機器上任何類型指針的大小都是4字節,在64位機器上為8。所以指針大小和類型無關
void*就是空類型指針,所謂空類型指針就是通用指針類型。它有以下特點。 1、按照ASC碼標準void指針不能做算術操作,因為不確定其指向數據類型大小;
2、c++允許將任何類型的指針賦給void*,但是不允許void指針賦值給其它類型。必須顯示的強制轉換。

其它類型指針相互之間是否也可以強制裝換?
? ?強制轉換后編譯能通過,大部分情況下運行也是沒有問題的,但是根據參考文獻[4]的說法是容易出問題的,因為某些CPU對某些數據類型有對其限制,這樣在做指針強制轉換的時候就容易出現問題。
? ?其實,其它類型指針之間的轉換完全可以通過使用void*類型來避免。

sizeof[2]:

前面說在同一臺機器上指針大小是固定的,通過sizeof測試int*,char*,bool*,double*都出結果都是4(32位機器測試)。
今天在程序中memset一個T*類型的指針,發現沒有初始化成功,原來在memset的第三個參數中填的是sizeof(T*類型的指針)。特此總結了一下sizeof的一些問題。
1、char* s="0123456789";
??????sizeof(s)=4,s是一個指針。
? ? ? sizeof(*s)=1,*s是第一個元素。
? ? ? strlen(s)=10,s是字符串首地址。
2、char s[]="0123456789";
? ? ? sizeof(s)=11,s是字符串數組,包括'\0'。
? ? ? sizeof(*s)=1,*s是第一個元素。
? ? ? strlen(s)=10,s是字符串首地址。
3、char s[20]="0123456789";
? ? ? sizeof(s)=20,s是在內存中靜態分配的大小。
? ? ? sizeof(*s)=1,*s是第一個元素。
? ? ? strlen(s)=10,s是字符串首地址。

結構體[3]:

結構體在字節對齊的時候有三個原則,有了這三個原則就很容易的可以計算出任意一個結構體的sizeof大小了。
1、結構體變量的首地址能夠被其最寬基本類型的成員大小所整除;
2、結構體每個成員相對于結構體首地址的偏移量(offset)都是成員大小的整數倍,如有需要編譯器會在成員之間加上填充字節(internal adding);
3、結構體的總大小為結構體最寬基本類型成員大小的整數倍,如有需要編譯器會在最末一個成員之后加上填充字節(trailing padding)。

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

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

相關文章

Drawing繪圖halcon算子,持續更新

目錄drag_region1drag_region2drag_region3draw_circledraw_circle_moddraw_ellipsedraw_ellipse_mod_draw_linedraw_line_moddraw_nurbsdraw_nurbs_interpdraw_nurbs_interp_moddraw_nurbs_moddraw_pointdraw_point_moddraw_polygondraw_rectangle1draw_rectangle1_moddraw_re…

搞明白這八個問題,Linux系統就好學多了

正在猶豫入坑Linux學習的同學或者已經入坑的同學,經常會問到這樣八個問題。今天,這些問題我都會一一解答,希望我的看法能幫助各位同學。常言道“好的開始是成功的一半”,如果你明白了以下八個問題,就能有一個很好的開始…

從ORA-27300,ORA-27301到ORA-00064

近期因為session數量添加,須要調整session,也就是要調整process參數。看是比較簡單的一個問題,卻遭遇了ORA-27300,ORA-27301。因為這個涉及到了有關內核參數kernel.sem的改動。以下是其詳細描寫敘述。1、故障現象OS版本號&#xf…

Halcon|讀取3D相機點云數據

Halcon|讀取3D相機點云數據 最近發現很多小伙伴在使用Halcon處理3D工業相機掃描結果的時候遇到了“如何讀取”的問題。一般的3D工業相機儲存數據的格式有txt格式、tif格式、csv格式、ply格式、ptx格式、bin格式、obj格式等。 txt格式 讀取txt文件生成3D模型一般需要分析txt文件…

FFMPEG解碼流程

1. 注冊所有容器格式和CODEC: av_register_all() 2. 打開文件: av_open_input_file() 3. 從文件中提取流信息: av_find_stream_info() 4. 窮舉所有的流,查找其中種類為CODEC_TYPE_VIDEO 5. 查找對應的解碼器: avcodec_find_decoder() 6. 打開編解碼器: avcodec_open…

linux用戶登錄指定目錄

一、創建用戶和用戶組 [rootweb4 lianyu]# groupadd lianyu [rootweb4 lianyu]# useradd lianyu -g lianyu [rootweb4 lianyu]# passwd lianyu二、用戶登錄指定目錄 [rootweb4 lianyu]# cd /home/lianyu [rootweb4 lianyu]# ls -a . .. .bash_history .bash_logout .bas…

轉載:說一下AI的前景吧

發信人: wdong (萬事休), 信區: Stock標 題: 說一下AI的前景吧這一波AI和前兩年的big data,根本就是兩回事。big data這一波,主要是用數據分析來支撐起各種現有系統的改進,包括銷售業績的提高和用戶體驗的提高等。AI當然也可以應用回這些領域…

藥片粘連物體的分割

藥片粘連物體的分割要求:圖片:處理程序:處理結果:要求: 將藥片分割,統計藥片數量。不能使用模板匹配。 圖片: 先看一下要處理的原圖: 處理程序: read_image (Image…

FFMPEG CODEC使用總結

分類: 視頻編解碼技術 2010-07-15 10:29 283人閱讀 評論(0) 收藏 舉報 ffmpeg里提供了很多的encoder,decoder,詳見avcodec.h里的枚舉變量CodecID。 宏定義 #define REGISTER_ENCODER(X,x) { / extern AVCodec x##_encoder; / …

java 鏈接mysql 產生500W數據模擬生成環境

java 插入數據到mysql 通過sqoop 導入到hive 中,kylin模擬見cube 時間和 數據膨脹率 kylin 數據插入到 HBase Kylin HBase 1.1.3 Hive 1.2.1 Hadoop 2.5.1 create table infoagetime( prod_name char(10), prod_id SMALLINT, ods_date DATE )數據格式 oPmgBZxldW …

中本聰研究所創始人對Core的發展方向感到厭惡

在本月,中本聰研究所(Satoshi Nakamoto Institute)的聯合創始人Daniel Krawisz離開了該研究所,原因是Daniel覺得SNI社區逐漸變得讓他無法忍受,甚至感到厭惡。Daniel發表在SNI上的大量文章被刪除,有關于比特…

BZOJ 1026 [SCOI2009]windy數

1026: [SCOI2009]windy數 Description windy定義了一種windy數。不含前導零且相鄰兩個數字之差至少為2的正整數被稱為windy數。 windy想知道,在A和B之間,包括A和B,總共有多少個windy數? Input 包含兩個整數,A B。 Outp…

不連續區域的擬合

如下圖,需要把圖中4個半圓分別連接起來 我試過closing 和 dilation,下圖中后三個還可以連接起來, 但是第一個因為不連續地方較長,如果增大closing的值,會導致其它點 出現過度畸形。 有沒有能連接相鄰選區的方法&#…

X264碼率控制流程分析 (轉)

二、編碼器機能20鐘頭前  碼率節制的意見常識:   碼率節制的目的以及意義:   圖象通訊中碼率節制的目的:路程經過過程調治編碼參量,節制單元時間內的編碼視頻文件流的數值量,以使 ... 二、編碼器機能20鐘頭前碼率…

SPSS輸出的結果都要寫到文章中嗎

SPSS輸出的結果都要寫到文章中嗎 經常有人問到,SPSS輸出的結果都要寫到文章中嗎?文章中應該寫什么呢?比如,均值、中位數、眾數、標準差、百分位數、最小值、最大值等等,都要出現在文章中嗎?洋洋灑灑那么多&…

php Closure 類型

2019獨角獸企業重金招聘Python工程師標準>>> <?php /*** Closure 理解* 匿名函數&#xff08;Anonymous functions&#xff09;&#xff0c;* 也叫閉包函數&#xff08;closures&#xff09;* Closure 是匿名函數的php中的稱呼*/// 創建一個Closure$func funct…

ftk學習記(label篇)

【 聲明&#xff1a;版權全部&#xff0c;歡迎轉載&#xff0c;請勿用于商業用途。 聯系信箱&#xff1a;feixiaoxing 163.com】還是接著上面的一篇博文。之前以前答應過大家&#xff0c;讓大家看一下最簡單的ftk程序是怎么執行的。所以&#xff0c;這里我們上傳一下圖片。由于…

扇形特征點提取

處理要求 分別找出扇形左上角&#xff0c;左下角&#xff0c;右上角&#xff0c;右下角&#xff0c;最高點&#xff0c;下面弓形最高點 原圖 halcon 處理程序 read_image (Image14208259e49d7b1cf7c544, 544.bmp) rgb1_to_gray (Image14208259e49d7b1cf7c544, GrayImage) t…

集成顯卡與獨立顯卡的區別

集成的顯卡不帶有顯存&#xff0c;使用系統的一部分主內存作為顯存&#xff0c;顯卡的數量一般是根據需要自然動態調整。顯然&#xff0c;使用集成顯卡運行需要大量占用顯存的程序&#xff0c;對整個系統的影響比較明顯&#xff0c;此外系統內存的頻率通常比獨立的顯存度低很多…

[ CodeVS沖杯之路 ] P3116

不充錢&#xff0c;你怎么AC&#xff1f; 題目&#xff1a;http://codevs.cn/problem/3116/ 基礎的高精度加法&#xff0c;注意一下兩個數長短不一和答案第一位的處理即可&#xff0c;當然也可以用壓位的方法做 1 #include<cstdio>2 #include<cstdlib>3 #include&l…