C语言变长数组 struct中char data[0]的用法

摘要:在实际的编程中,我们经常需要使用变长数组,但是C语言并不支持变长的数组。此时,我们可以使用结构体的方法实现C语言变长数组。


/struct MyData 
/{
/ int nLen;
/ char data[0];
/}; 
在结构中,data是一个数组名;但该数组没有元素该数组的真实地址紧随结构体MyData之后,而这个地址就是结构体后面数据的地址(如果给这个结构体分配的内容大于这个结构体实际大小,后面多余的部分就是这个data的内容);这种声明方法可以巧妙的实现C语言里的数组扩展。
实际用时采取这样:
struct MyData *p = (struct MyData *)malloc(sizeof(struct MyData )+strlen(str))
这样就可以通过p->data 来操作这个str。

程序实例:


/struct MyData 
/{
/ int nLen;
/ char data[0];
/};
/
/int main()
/{
/ int nLen = 10;
/ char str[10] = "123456789";
/
/ cout << "Size of MyData: " << sizeof(MyData) << endl;
/
/ MyData *myData = (MyData*)malloc(sizeof(MyData) + 10);
/ memcpy(myData->data, str, 10);
/
/ cout << "myData's Data is: " << myData->data << endl;
/
/ free(myData);
/
/ return 0;
/}

输出:

/Size of MyData: 4
/myData"s Data is: 123456789

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MOS管的实际应用

继上一篇“认对画对MOS管”后&#xff0c;现在小结一下MOS管的具体应用&#xff1a; 应用MOS管前&#xff0c;理解MOS管每个参数的具体意义后&#xff0c;再额外注意一下管子本身的体二极管&#xff0c;本身Vf1.6V&#xff0c;导通后管子本身阻抗一般是mΩ级&#xff1b;管子厂…

Spring - Spring Boot Spring Cloud

Spring -> Spring Boot > Spring Cloud 这几天刚刚上班&#xff0c;公司用的是Spring Cloud&#xff0c;接触不多。我得赶快学起来。 想学习就必须得知道什么是微服务&#xff0c;什么是Spring Boot&#xff0c;什么是Spring Cloud&#xff0c;以及两者之间有什么关系&am…

JAVA中循环删除list中元素的方法总结

印象中循环删除list中的元素使用for循环的方式是有问题的&#xff0c;但是可以使用增强的for循环&#xff0c;然后今天在使用时发现报错了&#xff0c;然后去科普了一下&#xff0c;再然后发现这是一个误区。下面就来讲一讲。。伸手党可直接跳至文末。看总结。。 JAVA中循环遍历…

直流有刷电机与无刷电机的区别

首先介绍有刷电机与无刷电机工作原理&#xff0c;最后从调速方式及性能差异这两个方面详细的阐述了有刷电机与无刷电机的区别。 有刷电机与无刷电机工作原理 1、有刷电机 电机工作时&#xff0c;线圈和换向器旋转&#xff0c;磁钢和碳刷不转&#xff0c;线圈电流方向的交替变化…

MapReduce详解

MapReduce简介 MapReduce是一种编程模型&#xff0c;用于大规模数据集&#xff08;大于1TB&#xff09;的并行运算。概念"Map&#xff08;映射&#xff09;"和"Reduce&#xff08;归约&#xff09;"&#xff0c;是它们的主要思想。 MapReduce极大地方便了编…

运放的主要参数详细介绍

1. 引言 运放的作用是调节和放大模拟信号&#xff0c;它是用途十分广泛的器件&#xff0c;接入适当的反馈网络&#xff0c;可用作精密的交流和直流放大器、有源滤波器滤波器、振荡器振荡器及电压比较器。其应用领域包括但不限制通讯、电子、汽车、工业检测等等&#xff0c;并将…

MOS管的主要参数与重要特性

双极性晶体管&#xff1a;NPN和PNP管&#xff1b; 单极性晶体管&#xff1a;场效应管&#xff08;MOSFET和JFET&#xff09;&#xff1b; MOS管相对三极管具有速度快、输入阻抗高、噪声低、动态范围大、功耗小、容易集成等优点。 下面总结下其主要参数与重要特性&#xff0c…

垂直居中方法总结

<style>#box{position: absolute;margin: auto;top:0px;right: 0px;bottom: 0px;left: 0px;width: 100%;height: 30%;background-color: red;text-align: center;} </style> <body><div id"box"><h1>文字居中</h1></div> …

NAND 坏块管理

NAND的操作管理方式 NAND FLASH的管理方式&#xff1a;以三星FLASH为例&#xff0c;一片Nand flash为一个设备(device)&#xff0c;1 (Device) xxxx (Blocks)&#xff0c;1 (Block) xxxx (Pages)&#xff0c;1(Page) 528 (Bytes) 数据块大小(512Bytes) OOB 块大小(16Bytes&…

运放的典型电路举例与计算仿真

运放电路的计算&#xff0c;通过记各种公式很难记住&#xff0c;但是掌握其两个重要概念&#xff0c;所有计算均可迎刃而解。 那就是运放的两个重要特性&#xff1a; 虚断&#xff1a;运放本质特性&#xff0c;输入阻抗大&#xff0c;两个输入端视为等效开路&#xff1b; 虚…

#define GPBCON (*(volatile unsigned *)0x56000010) 的理解

2019独角兽企业重金招聘Python工程师标准>>> 对于不同的计算机体系结构&#xff0c;设备可能是端口映射&#xff0c;也可能是内存映射的。如果系统结构支持独立的IO地址空间&#xff0c;并且是端口映射&#xff0c;就必须使用汇编语言完成实际对设备的控制&#xff…

三极管基本参数介绍与放大电路分析

全称为半导体三极管&#xff0c;也称双极型晶体管、晶体三极管&#xff0c;是一种电流控制电流的半导器件&#xff0c;作用是把微弱信号放大成幅度值较大的电信号&#xff0c; 也用作无触点开关。 两个PN结的排列方式有两种&#xff1a;PNP和NPN。 三个端点依序称为射极&#…

eclipse启动了tomcat,但是浏览器打不开欢迎页

tomcat在eclipse中启动成功&#xff0c;主页却打不开 症状&#xff1a; tomcat在eclipse里面能正常启动&#xff0c;而在浏览器中访问http://localhost:8080/不能访问&#xff0c;且报404错误。同时其他项目页面也不能访问。 关闭eclipse里面的tomcat&#xff0c;在tomcat安装目…

三极管放大电路三种类型

根据三极管三个电极与输入输出端子的连接方式&#xff0c;可归纳为三种&#xff1a;共发射极电路、共基极电路和共集电极电路&#xff1b; 三种电路的共同点&#xff1a;各有两个回路&#xff0c;一个输入回路一个输出回路&#xff0c;两个回路有一个公共 端&#xff0c;而公…

MOS管的米勒效应简介

一、米勒平台介绍 Mos管的三极都会存在以下 的三个电容,分别是:Cgs,Cgd,Cds。 米勒电容指的是Cgd。米勒效应在MOS驱动中臭名昭著,他是由MOS管的米勒电容引发的米勒效应,在MOS管开通过程 中,GS电压上升到某一电压值后GS电压有一段稳定值(图中t2~t3阶段),过后Vgs电压…

PopupWindow 使用详解(二) Popwindow 制作常见花哨效果

帝都几日降温&#xff0c;终于被撂倒了。but 只要一息尚存就得不断进步&#xff01;于是&#xff0c;写出 《PopupWindow 使用详解》的第二篇 笔记&#xff0c;先奉上 第一篇链接: 《PopupWindow 使用详解&#xff08;一&#xff09; 中文API 文档 赠送 ListPopupWindow 中文 A…

近距离无线通信技术对比

定义&#xff1a;无线通信是利用电磁波信号在自由空间中传播的特性进行信息交换的一种通信方式。 优点&#xff1a;成本低、无物理线路&#xff0c;不受工业环境限制&#xff0c;环境适应能力强&#xff1b; 故障诊断简单&#xff0c;可远程诊断&#xff0c;扩展性强&#xff…

看不清的融资迷局 二线玩家字节跳动在打什么主意?

互联网似乎对离经叛道者总是多一分关注&#xff0c;吃瓜心态随着时间的推进越来越浓烈。 其中&#xff0c;今日头条成了“看热闹”时代最佳的“演员”之一&#xff0c;供看客消遣&#xff1a;其母公司字节跳动一个融资传闻从8月炒到了10月&#xff0c;即便是媒体通过信源确认这…

第3章-动态基础分析实验

Lab 3-1 Question: 1.先对文件使用PEID进行查壳,显示文件被加壳处理过 2.使用Dependency Walker查看文件导入函数&#xff0c;文件只有一个DLL而且只有一个导入函数Exitprocess 3.使用Strings程序查看字符串&#xff0c;发现可疑字符串。 4.动态分析前期准备 4.1 对系统进行初始…

C语言变长数组data[0]【总结】

C语言变长数组data[0]【总结】 1、前言 今天在看代码中遇到一个结构中包含char data[0]&#xff0c;第一次见到时感觉很奇怪&#xff0c;数组的长度怎么可以为零呢&#xff1f;于是上网搜索一下这样的用法的目的&#xff0c;发现在linux内核中&#xff0c;结构体中经常用到data…