当前位置:网站首页>标准C语言学习总结13
标准C语言学习总结13
2022-08-06 19:20:00 【c7473168】
1,文件包含
#include 把一个头文件导入到当前文件中
#include <>
#include ""
编译参数 -I 路径 指定头文件的加载路径
修改系统的环境变量
2,定义宏
宏常量
#define 宏名 替换的字面值数据
#define format %d%c%hhd%s%hhd
如果在代码中使用了宏,那么在预处理时会把所有的宏替换为它后面的字面值数据
优点:提高可扩展性,提高可读性,提高了安全性,与case配合使用
注意:一般宏名全部大写,末尾不加分号 不能直接换行(可以在末尾加\续行符)
宏函数
不是真正函数,只是带参数的宏,使用宏函数,先替换成宏函数后面的代码,
提供的参数会替换代码中相应的位置
#define AVG(a,b) {(a+b)/2;}
二义性:由于宏函数所处位置,参数的不同,导致同一个宏函数有多重解释结果,
这种叫做宏的二义性
每一个参数加小括号,整个式子也加小括号,不要在参数中使用自变运算符
运算符
# 把宏函数的参数变成字符串
## 合并两个参数变长标识符
3,条件编译 根据条件决定哪些代码是否参与最终的编译
#if #elif #else #ifdef #ifndef #endif
头文件卫士:
#ifndef FILENAME_H
#define FILENAME_H
...
#endif//FILENAME_H
版本控制:
#if VERSION>=3
4,'常考的笔试面试题
定义一个宏表示100年总共有多少秒
#define SEC (3600*24*365*100u)
define和typedef的区别?
在定义常量时const与#define有什么区别?
宏函数与普通函数的区别?
'
5,头文件中只能编写声明语句
重点:头文件中只能有声明语句,不能有定义语句
规则:1,每个.c都应该有一个它的.h文件,对它进行说明
2,其他文件想要使用.c中的内容,只需要把它的.h导入即可
3,自己的.h也要导入,为了声明与定义一致
头文件相互包含:
解决方法:提取相互包容的内容,重新写一个.h文件然后再包含
未知类型名"xxxx",确认自己没写错名字,也导入对应的头文件,
大概率就是头文件相互包含
6,Makefile
Makefile是由一系列编译指令组成的可执行文本文件
可以进行自动化编译
能写出最简单的Makefile即可
一,结构
结构是一种由程序员自己设计的数据类型,用于描述一个事物的各项特征数据
由若干个不同的基础类型组成
设计:
struct 结构类型名
{
类型 成员名1;
类型 成员名2;
...
};
定义结构变量:
struct 结构类型名 结构变量名;
注意:struct在C语言中,定义结构变量时不能省略
定义结构变量并初始化:
struct 结构类型名 结构变量名 = {v1,v2,v3...};
初始化顺序一定要与成员顺序一致
struct 结构类型名 结构变量名 = {.成员名2=v2,.成员名1=v1,...}
只初始化某些成员,顺序无需一致
注意:同类型的结构变量可以直接给另一个结构变量初始化
注意:这种赋值方式只能在定义时使用
访问成员:
结构变量名.成员名;
由于结构变量的字节数一般都比较大,普通的值传递效率非常低,
因此传递结构变量的地址,也即是传递结构指针变量,此时想要通过结构指针
变量访问成员时借助 -> 如果不需要修改指针变量的成员值,
可以使用const保护一下
结构指针变量名->成员名;
练习1:设计一个教师结构体类型,类型中要有成员:姓名:,性别,工号,工龄
定义一个教师结构变量,使用scanf输入每个成员的值并显示
typedef重定义结构类型名:
typedef struct 结构类型名 结构类型名;
typedef struct 结构类型名
{
}结构类型名;
之后定义结构变量,可以不加struct
如何计算结构体的总字节数:
结构成员顺序会影响它的总字节数,如果能够在设计结构体时合理地安排成员顺序
可以大大的节约内存
内存对齐:
假设第一个成员从零地址开始,存储每个成员的地址编号必须能被该成员的类型
字节数整除,如果不能整除则填充空白字节
内存补齐:
结构体的总字节数,必须是它最大成员字节数的整数倍
如果不能整除,则在末尾补充空白字节
在Linux系统下计算结构体的对齐补齐时,如果成员的字节数超过4,
则按照4字节计算对齐和补齐
windows 是按实际字节数对齐补齐
边栏推荐
- C#事件订阅发布实现原理详解
- Cache series: cache consistency problem solution
- 删除数据库
- Stream streams are grouped by multiple fields
- OS模块中获取当前文件的绝对路径的相关方法
- qt实现coturn穿透客户端,coturn服务器搭建
- GPT-3组合DALL·E,60秒内搞定游戏设定和原型动画!网友看后:这游戏想玩
- PAT甲级:1049 Counting Ones
- PettingZoo:多智能体游戏环境库入门
- Star set sail: cross-border electricity try heddle area for the majority of sellers to provide more market opportunities for development
猜你喜欢

阿里二面:接口流量突增,如何做好性能调优?

大多数人都会答错的一题:如果要存 IP 地址,用什么数据类型比较好?

Apifox和Apipost有什么区别?那个更有优势(接口工具)postman、jmeter等等、、、

Day11:文件和异常

深入浅出富文本编辑器

这个数据太骚!搞得我都激动了。

Sql注入的基础

PettingZoo:多智能体游戏环境库入门

视频播放速度调节的chrome插件,怎么快捷键调节B站播放速度

weditor安装出现“UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xad in position 825: illegal multiby”
随机推荐
Day11:文件和异常
为什么Video Speed Manager 和 Video Speed Controller 的chrome插件对有些B站视频不能调速
【电路基础1】电阻
ssh set key authentication login
Application of selenium webDriver
antd的表格有多选框时翻页记住之前选择的数据
好好学习第一天:手写数字识别
星起航:跨境电商试综区为广大卖家提供更多的市场发展机遇
STPM 利用教师学生网络进行无监督异常检测
洞中一梦,闽都千年,《寻梦闽都》隧洞沉浸式演出惊艳亮相!
After resigning naked, I slapped the interviewer of a large factory. After I got an offer from Ali, I still chose Meituan.
#yyds dry goods inventory# Interview must brush TOP101: determine whether a linked list is a palindrome structure
手把手教你定位线上MySQL锁超时问题,包教包会
8.camera调试日志
Introduction to Mail Services POP3, SMTP and IMAP
63:第五章:开发admin管理服务:16:开发【删除友情链接,接口】;(核心是:理解MongoDB,删除数据的逻辑)
Open3D Airborne Point Cloud Powerline Extraction
小熊派学习—网络应用开发
Following the 3GPP standard, Aipulo's satellite simulation platform has achieved 8 major functions!
Secrets are stored in etcd without encryption by default