C-进制,多文件开发,预处理,地址
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C-进制,多文件开发,预处理,地址相关的知识,希望对你有一定的参考价值。
预处理指令:
1.分类
a.文件包含指令 #include
b.宏定义 #define
c.条件编译指令 #if
2.特点
a. 都是以#号开头
b.预处理指令的后面没有分号
c.编译前执行
3.文件包含指令: #include
a.作用: 可以将制定的文件的内容拷贝到写指令的地方
b.语法: #include “文件路径”
1 #include <文件路径>
c.使用:在编译之前,就会执行处理代码,这时候,就会将include后面的文件的内容拷贝到引用处,然后再检查语法,相当于写指令的这个地方实际上写的是文件中的内容
4.使用注意
a.被包含的文件必须符合语法规范,否则在编译检查错误的时候就会报错.
b.如果被包含的文件不存在,就会报错
5.被包含文件的存放问题
一般情况下,不要乱放被包含的文件
放在源文件目录下,和当前的.c在同一个目录—便于管理
如果将被包含的文件和源文件放在同一个目录下,写指令的时候就不要写全路径了
二是写一个相对路径: 和当前源文件的路径相同的部分删除就可以了
绝对路径:从根目录开始的路径
相对路径:相对于当前文件/文件夹的路径(相同的部分忽略)
如果是一个相对路径,就会从当前文件所在的目录中去找
两种包含指令的异同点
1.都是指定的文件的内容包含到写指令的地方
2.不同点在于寻找指定文件的方式不一样
a.如果文件路径用的是双引号
→先去当前源文件所在的目录中查找文件,如果有,直接包含
→如果没有,就取系统自带的编译器目录中查找,如果有,包含, 没有,报错
b.如果是<>
→直接去编译器目录中查找,有,包含,没有报错
调用c语言库函数中的函数
1.将这个函数的声明所在的头文件包含进来
使用建议:
1.自定义的被包含文件,不要乱放,放在和源文件同1个目录下
2.如果包含的文件是我们自定义的文件,那么使用””
如果包含的文件是系统自带的,使用<>
多文件开发
1.所有函数写在一个文件里的缺点
→ 混乱,不方便管理
→不利于团队开发
2.每一个人负责一个模块的开发→模块化编程
每个模块都是一个小功能
不同的模块由不同的人负责
模块/功能 → 函数
谁需要使用这个功能,调用这个函数就行了
3.如果分模块开发
1.新建一个.c文件,将功能相关的函数写在这个文件当中
2.一般是写模块的人提供两个文件
.h文件, header头文件 专门写函数的声明
.c文件, 代码文件,专门写函数的实现
4.调用模块函数的时候.先将头文件包含进来,然后直接调用函数
5.如果写模块的人需要新增,修改,删除函数,那么包括在头文件在内都要修改
总结:当程序的函数过多的时候,就要考虑分模块开发
进制知识:
1.基本概念
1.数码: 数据的每一位的数字
2.数位: 数码在数字中的位置, 从左到右从0开始依次递增
3.基数:每一个数码可以有多少个数据来表示——实质是这个数据的进制
4.位权:数码乘以基数的数位次方
2.内存中的数据存储单元是由1个1个的二进制位组成的,每一个二进制位职能存0或者1
如果我们使用一个二进制来存储数据的话,每一个二进制位只能表示2个数据
规定每 8 个二进制位为1组,称为1个字节,字节是存储数据的最小基本单位
3. 如何测量出每个变量在内存中占用的字节数?——sizeof()
1.使用方法
a. sizeof(数据类型) 返回这种数据类型的变量在内存中占据多少字节
b. sizeof(变量名) 返回的是这个变量在内存中占据多少个字节
c. sizeof(常量) 返回的是这个常量数据在内存中占据的字节数
2.sizeof可以简写的情况
测常量的时候可以省略小括弧
测变量的时候也可以省略小括弧
但是sizeof(int)不可以省略
进制-按位与
任何数按位与1的结果是: 是这个数的最低位
偶数的最低位是0,奇数的最低位是1
所以判断一个数是奇数还是偶数, 只要用这个数按位与1就可以了
1 → 奇数, 0 → 偶数
面试题:
判断一个数是否是偶数
int num = 10; if((num & 1) == 0){ 偶数 }else 奇数
不要用傻逼的%2==0这种了
按位左移和按位右移可以用到某些特殊的乘除运算中, 而且会比乘除运算更快
例如 5 * 16 可以转换成 5 << 4
2048 / 16 可以转换成 5 >> 4
变量在内存中的存储方式
声明一个变量, 就是在内存中分配连续的指定字节数的内存空间
分配的时候,是从高地址到地址分配的, 连续分配
存储在变量中的数据是以数据的二进制补码形式存储进去的
在分配的空间内, 数据是按低位存储的,即 低位存储在低位字节, 高位存储在高位字节
变量的地址, 是组成这个变量的低字节的地址
& → 取地址运算符
几种不是很常用的修饰符
long long修饰符
long long int num = 10;
——8位 格式控制符: %lld
unsigned shot int
%hu
short
%h
unsigned long
%lu
unsigned long long
%llu
以上是关于C-进制,多文件开发,预处理,地址的主要内容,如果未能解决你的问题,请参考以下文章
C/C++语言编译生产可执行的二进制文件的过程??求大神详尽解释,
在 Python 多处理进程中运行较慢的 OpenCV 代码片段
译文:18个实用的JavaScript代码片段,助你快速处理日常编程任务
android.view.InflateException:二进制 XML 文件第 15 行:二进制 XML 文件第 19 行:膨胀类片段时出错