1.结构体和联合体的区别
(1)16位、32位、64位编译器下,各变量所占内存
https://blog.csdn.net/li975242487/article/details/121395693
32位下,指针变量长度2^32是4字节;64位下,指针变量长度2^64是8字节;
(2)结构体大小计算方式
https://blog.csdn.net/Surge_Pitt/article/details/109577614
取决于最大变量的整数倍,在内存上不连续
(3)联合体大小计算方式
- 联合体的大小等于成员中最大的长度
- 联合体每次对不同成员赋值,会对其他成员进行重写
- https://zhuanlan.zhihu.com/p/654188055(联合体和结构体的使用说明)
联合体和结构体的区别:1.结构体的成员存放在不同的地址,联合体的成员共享一段空间
2.结构体可以对每个成员单独赋值,联合体同时只能对一个对成员赋值,不然会造成重写
3.结构体的大小等于所有成员之和,考虑字节对齐就是最大成员的整数倍;联合体是等于最大成员的长度
2.关键字static、volatile、extern
(1)static是局部变量,在函数调用时他只被初始化一次,不会被立即释放,下次调用时,使用上次的值,只能在本文件内使用
#include <stdio.h>
void fn_static(void)
{
static int n = 10;
printf("static n=%d\n", n);
n++;
printf("n++=%d\n", n);
}
int main(void)
{
fn_static();
fn_static();
fn_static();
return 0;
}
(2)