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.mzph.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…