初探C的结构体
来源:互联网 发布:上海 逛街 知乎 编辑:程序博客网 时间:2024/05/17 18:19
上来先说点别的
编译过程:
(.c文件)-预处理(.i文件)-编译(.s文件)-汇编(.o文件)-链接(可执行文件)
预处理:
1.展开头文件
2.宏定义 宏替换只是替换,不会运算
宏不考虑c的语法,只是单纯的字符串替换
宏相对于调用函数来说,可以不考虑返回值的类型,因为宏可以不考虑c的语法
定义方法:
#define R 10 //不用分号 或者: #define ADD(a,b) a+b
typedef: //给变量起别名,加分号结尾,预处理后不替换
typedef int tni;//给变量类型int起一个别名tni,要用分号结尾
typedef int*p; //给int *起别名p;int *q =NULL;相当于 p q=NULL;
结构体:创建(声明) 定义 初始化 引用
struct xinx //创建结构体类型struct xinx{ char name[20]; int sanwei;};struct xinx aver; //定义一个变量cangls(这种是声明与定义分离形式)struct xinx aver={“cangls”,90 };//结构图初始化printf(“%s\n %d\n”,aver.name , aver.sanwei); //引用结构体 . 是最高优先符struct xinx *w; //定义指向结构体的指针w=&xinx; //初始化指针printf(“%s\n”,(*w).name); //引用 (*w)括号不能省,因为 . 比*优先//可以使用”w->name”代替(*w).name结构体指针:1 stu.成员名(stu.name)2(*p).成员名( (*p).name )3p->成员名(p->name)
共用体:
结构体占用空间的大小,其实是:最后一个变量的偏移量(某一个成员的实际地址与这个结构体首地址的距离)(还有偏移量必须是这个变量所占用内存的整数倍,如果不是编译器就会在成员之间加上前充字节),加上最后一个变量的内存大小,如果前两个加起来不能整除最宽的变量,那么还要加上最后一个变量的尾部填充字节数。所有成员共享一个内存地址
1.联合体 union的作用:让几个不同类型的变量共享同一个内存地址,同一时刻只能存储
一个成员;初始化时只能有一个常量;内存长度取最长值;
2.结构体内存大小:以最后一个成员的偏移量+自身大小+字节填充
(电脑会自行填充至成员大小整数倍)
阅读全文
0 0
- 初探C的结构体
- c的结构体
- C# 结构的重要差异 初探
- systemd初探-服务的Unit文件结构
- c语言的结构体
- C的结构体存储
- C 结构体的使用
- C 语言的结构体
- C语言的结构体
- c语言的结构体
- C语言结构体和C 结构体的区别
- [C/C++]结构体大小的计算方法
- C的结构体和C++结构体的区别
- PDF 文件结构初探 开源iTextSharp(C#) PDFLib中Block结构分析
- 纯c结构体与c++结构体的理解
- c结构体、c++结构体和类的区别
- C的结构体和C++结构体
- C结构体和C++结构体的区别
- ie8下attr(‘value’)和val()区别
- pom.xml文件中引入jar包冲突解决方法
- SOAPUI测试步骤(六)---PropertyTransfer
- 欢迎使用CSDN-markdown编辑器
- 关于QT的那些事(三)
- 初探C的结构体
- PHP&js获取数组中最接近数值的值
- volatile
- 关于mysql数据库的备份和恢复
- Opencv中Adaboost的具体实现及使用资料总结
- 错误与异常
- LightOJ
- springmvc设置接口后缀名
- 罗马数字转换阿拉伯数字0~3999