当前位置:网站首页>L'utilisation de C language 0 length Array
L'utilisation de C language 0 length Array
2022-06-27 11:06:00 【Fhqlongteng】
1、0Tableau de longueur
0Longueur du tableau signifie que la longueur du tableau est0,Par exemple,int a[0],Il ne prend pas d'espace mémoire après la compilation,C'est - à - dire:sizeof(a) = 0.
C99Le règlement peut êtreTableau de longueur variable int len ; int array[len];C'est - à - dire que le tableau est la taille du tableau spécifiée au moment de l'exécution du programme.Il est courant d'initialiser les données d'entrée.
GCCPrise en charge directe des tableaux de longueur nulle,int a[0];Un tableau de longueur zéro a une caractéristique qui n'utilise pas d'espace mémoire.0Les tableaux de longueur sont rarement utilisés seuls,Généralement utilisé dans les structures,Ne pas occuper la longueur de la structure,Utilisé lors de l'allocation de la mémoire continue.
2、0Utilisation de tableaux de longueur dans les structures
0.Les tableaux de longueur sont souvent utilisés dans les structures,Le code suivant est une structure avec0Tableau de longueur.Cette structuresizeof(struct rndis_query_msg) = 7Un mot=28Longueur des octets,OIDInputBuffer[0] Espace inoccupé dans la structure .
/* Remote NDIS Query Message */
struct rndis_query_msg
{
rt_uint32_t MessageType;
rt_uint32_t MessageLength;
rt_uint32_t RequestId;
rt_uint32_t Oid;
rt_uint32_t InformationBufferLength;
rt_uint32_t InformationBufferOffset;
rt_uint32_t Reserved;
rt_uint8_t OIDInputBuffer[0];
};
typedef struct rndis_query_msg* rndis_query_msg_t;OIDInputBuffer Utilisé principalement pour accéder aux variables des membres du tissu lors de l'allocation de mémoire Reserved Utilisation continue de la mémoire . Comme demander un struct rndis_query_msg Espace mémoire occupé par la structure ,EtOIDInputBuffer La mémoire pointée a 10 L'espace en octets peut être utilisé . Le Code peut être écrit comme suit .
rndis_query_msg_t prndis = NULL;
prndis = malloc(sizeof(struct rndis_query_msg) + 10);
if(prndis)
{
for(i = 0; i < 10; i++)
{
prndis->OIDInputBufferp[i] = i;
}
}
/* Si cet article vous aide ,Donnez - moi du thé--Ajoutez - moivx:longtengweixin*/3、Compilateurs pris en charge
0 Le tableau de longueur est écrit dans IARCompilateur,GCC Prise en charge dans le compilateur .Mais danskeil Le compilateur par défaut n'est pas pris en charge ,Même ouvertC99 Et le réglage de .keil Le logiciel doit être ajouté aux options de compilation --gcc Pour prendre en charge la compilation .

边栏推荐
- Leetcode 729. My schedule I (provides an idea)
- 【TcaplusDB知识库】Tmonitor系统升级介绍
- 嵌入式软件架构设计-模块化
- go-zero微服务实战系列(七、请求量这么高该如何优化)
- Go zero micro Service Practice Series (VII. How to optimize such a high demand)
- LLVM系列(1)- LLVM简介
- Leetcode 522 longest special sequence ii[enumeration double pointer] leetcode path of heroding
- Ubuntu manually installing MySQL
- Concepts of concurrency, parallelism, asynchronism, synchronization, multithreading and mutual exclusion
- Oracle-多表查询
猜你喜欢

How to deploy jupyterlab in methodot?

飞桨产业级开源模型库:加速企业AI任务开发与应用

ECMAScript 6(es6)

One copy ten, CVPR oral is accused of plagiarizing a lot

Oracle-分组统计查询

在外企远程办公是什么体验? | 社区征文

直播电子商务应用程序开发需要什么基本功能?未来发展前景如何?

杰理之串口通信 串口接收IO需要设置数字功能【篇】

Mail system (based on SMTP protocol and POP3 protocol -c language implementation)

堆-堆排序-TopK
随机推荐
Ubuntu手動安裝MySQL
在外企远程办公是什么体验? | 社区征文
Leetcode 729. My schedule I (awesome, solved)
Leetcode 729. 我的日程安排表 I(牛逼,已解决)
[tcapulusdb knowledge base] Introduction to tcapulusdb analytical text export
Leetcode 522 longest special sequence ii[enumeration double pointer] leetcode path of heroding
Oracle group statistics query
Quelles sont les fonctions de base nécessaires au développement d'applications de commerce électronique en direct? Quelles sont les perspectives d'avenir?
[methodot topic] what kind of low code platform is more suitable for developers?
ECMAScript 6(es6)
【TcaplusDB知识库】TcaplusDB表数据缓写介绍
KDD 2022 | epileptic wave prediction based on hierarchical graph diffusion learning
[tcapulusdb knowledge base] tcapulusdb machine initialization and launch introduction
LeetCode 522 最长特殊序列II[枚举 双指针] HERODING的LeetCode之路
.NET6接入Skywalking链路追踪完整流程
Experiment notes - Convert Carmen (.Log.Clf) file to rosbag
NVME2.0协议——新特性
Ci/cd automatic test_ 16 best practices for CI / CD pipeline to accelerate test automation
【TcaplusDB知识库】TcaplusDB OMS业务人员权限介绍
Glide缓存机制