c语言
文章平均质量分 57
Monitor0913
嵌入式软件开发工程师
展开
-
关于结构体和联合体大小的计算
在结构体成员中,a占5个字节,b占4个字节,c占8个字节。5+4+8=17.但是17不是 8的倍数,所以(5+3)+(4+4)+8=24.故占24个字节。那么结构体中 d占5字节,e占4字节,f占8字节。如果定义以2字节对齐,a占7字节,b占12字节,c占8字节,那么此联合体大小为12字节。联合体中a占10字节,b占8字节,c占8字节。成员a 占7字节,成员b 占 4*2=8 字节,成员c 占8字节,a占7字节,b占12字节,c占8字节。联合体中a占10字节,b占8字节,c占8字节。原创 2022-10-30 10:55:25 · 1453 阅读 · 1 评论 -
结构体定义函数指针的使用
下面的例子很好的说明了结构体函数指针的用法。#include <stdio.h> #include <stdlib.h> #include <string.h> #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))typedef struct{ int funCode; void (*func)(int *data);}FUNC;static void get_para1(int ...原创 2021-08-04 14:11:57 · 347 阅读 · 0 评论 -
#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof(arr[0])) 的含义
arr是个数组sizeof (arr) 就是这个数组所占的内存总量也就是字节总数,sizeof(arr[0]) 就是单个数组所占的内存.(sizeof(arr)/sizeof(arr[0]))就是arr数组的元素的个数.即 ARRAY_SIZE(arr)就是arr数组的元素的个数....原创 2021-08-03 15:24:19 · 2388 阅读 · 0 评论 -
C语言关键字(volatile / static /const / inline)
1 volatile关键字分析,往往应用在三种场合1)多线程编程共享全局变量的时候,该全局变量要加上volatile进行修饰,让编译器不要省略该变量的访问。2)裸机编程的时候,某函数与中断服务函数共享全局变量的时候,该全局变量要加上volatile进行修饰,让编译器不要省略该变量的访问。3)ARM定义寄存器的时候,寄存器是指向一个地址,要加上volatile进行修饰,让编译器不要优化而省略该变量的访问。2 static 一般有2个作用,规定作用域和存储方式.对于局部变量, st...原创 2021-07-04 19:15:19 · 482 阅读 · 0 评论