06 2022 档案

摘要:内联函数引入 C中对于一些频繁计算的短代码,通常写成宏来避免函数调用开销,但是再C++中会带来一个问题,即: 预处理器不能访问类的成员,因此宏不能作为类的成员函数。 c++中内联函数就用用来解决宏函数的缺陷。 C++用inline关键字来解决宏函数缺陷的问题 无论是在内联函数还是定义时都要加上inl 阅读全文
posted @ 2022-06-22 11:25 肖肖凯 阅读(65) 评论(0) 推荐(0)
摘要:const全局变量 cpp和c中的const全局变量都是放在常量区的,因此一定是不可以修改的 但是C语言中const全局变量默认是外部链接的,即可以跨文件使用,在一个文件里const int a = 10,在另一个文件中可以直接extern const int a声明一下即可使用。 CPP则默认是内 阅读全文
posted @ 2022-06-17 11:07 肖肖凯 阅读(248) 评论(0) 推荐(0)
摘要:条件编译基本概念 一般情况下,源代码中所有行都参与编译,但有时希望对部分源代码行只在满足一定条件时才编译,即对这部分源代码行指定编译条件。 如下例子,当加上 #define FLAG这一行时,会编译第一个函数,当去掉这一行时,会编译第二个函数。 条件编译实现格式 条件编译应用 防止头文件重复包含 如 阅读全文
posted @ 2022-06-16 16:28 肖肖凯 阅读(68) 评论(0) 推荐(0)
摘要:#include<>和#include""区别 ""表示先在file.c所在的当前目录找头文件file.h,若找不到,再按系统指定的目录检索。 <>直接按系统指定的目录检索 宏常量 不带参数的宏定义(宏常量) 比如 #define PI 3.1415 宏名一般大写 宏定义可以是常数、表达式 宏定义不 阅读全文
posted @ 2022-06-16 16:18 肖肖凯 阅读(37) 评论(0) 推荐(0)
摘要:函数指针 一个函数在编译时被分配一个入口地址,这个地址称为函数指针,函数名就代表函数的入口地址(类似数组名,不用&,函数名本身就代表函数的入口地址)。 函数指针定义需要包含两个要素,一个是函数的返回值,一个是函数参数。因此定义执行函数的指针时应该包含这两个要素。 定义函数指针一般通过两个步骤: ** 阅读全文
posted @ 2022-06-16 15:30 肖肖凯 阅读(117) 评论(0) 推荐(0)
摘要:流 流是一个动态的概念,把一个字节比喻成一滴水,则字节在设备、文件、程序之间的传输就是流,类似于水在管道中的传输,流是对输入输出的一种抽象,也是对传输信息的一种抽象。 程序只关心是否正确输入了要读取的字节数据,特定IO设备的细节对程序员是隐藏的。 文本流 文本流即以文本模式读取文件。文本流特定在不同 阅读全文
posted @ 2022-06-15 20:54 肖肖凯 阅读(105) 评论(0) 推荐(0)
摘要:结构体偏移量 结构体偏移量指的是结构体每个成员相对于结构体整体的首地址的一个偏移量,因此,第一个成员的偏移量肯定为0。 知道某个成员的偏移量,再知道该成员的类型,就可以很方便地通过解引用来取出该成员。 结构体字节对齐 使用sizeof计算结构体变量占用空间时,不能将结构体中所有成员占用空间简单相加。 阅读全文
posted @ 2022-06-15 15:46 肖肖凯 阅读(133) 评论(0) 推荐(0)
摘要:栈帧 在程序运行时,用栈保存一个函数调用所需要维护的信息,这被称为一个函数的栈帧或者活动记录,一个函数调用过程通常需要以下几方面信息: ** 函数返回地址 ** 函数参数 ** 临时变量 ** 保存的上下文:包括函数调用前后需要保持不变的寄存器 栈的生长方向 向下生长 即栈顶元素的地址最小,后入栈的 阅读全文
posted @ 2022-06-13 18:08 肖肖凯 阅读(158) 评论(0) 推荐(0)
摘要:![](https://img2022.cnblogs.com/blog/2773665/202206/2773665-20220613082230734-1367858653.png) 阅读全文
posted @ 2022-06-13 08:23 肖肖凯 阅读(13) 评论(0) 推荐(0)
摘要:磁盘文件与设备文件 文件大体上可以分为两类,一类是磁盘文件,一类是设备文件。 磁盘文件 磁盘文件是指通常存储在外部介质比如磁盘上的数据,通常只有在使用时才调入内存。 磁盘文件又可以分为文本文件和二进制文件,虽然在物理上都是以二进制的方式存储的,但是文本文件和二进制文件的编码格式不同。 文本文件 文本 阅读全文
posted @ 2022-06-12 20:45 肖肖凯 阅读(382) 评论(0) 推荐(0)
摘要:memset() 需要注意的是参数n代表的是字节数,而不是元素数,如下边例子,指针p的类型是int,但是用memset填充的时候的单位是字节,所以,此时只有所有字节置零是有效的操作,如果置1的话就会造成int型存储区域的四个字节是10101010,这样得出来的结果必然不是1。 memset()函数的 阅读全文
posted @ 2022-06-11 15:28 肖肖凯 阅读(51) 评论(0) 推荐(0)
摘要:C语言作用域 一共分为三种: ** 代码块作用域,即一个单独的{}抱起来的代码块部分 ** 函数作用域,函数内部代码块 ** 文件作用域,一个.c或.h文件内部 全局变量与局部变量 局部变量就是在{}中的变量,比如函数中定义的,或者形参等。其生命周期即从创建到函数结束。 全局变量即不再任何{}中的变 阅读全文
posted @ 2022-06-11 15:03 肖肖凯 阅读(132) 评论(0) 推荐(0)
摘要:例1,函数中的字符数组 当前例子中,func函数中定义了一个字符数组,它的创建位置在栈区,因此当func函数返回后该字符数组就被销毁了,因此以下方式主函数中不能成功打印出字符串。 点击查看代码 #include<stdio.h> char * func(){ char a[] = "hello wo 阅读全文
posted @ 2022-06-10 17:25 肖肖凯 阅读(365) 评论(0) 推荐(0)
摘要:此时数据arr的每个元素都是一个字符串的首地址。 阅读全文
posted @ 2022-06-09 16:48 肖肖凯 阅读(20) 评论(0) 推荐(0)
摘要:野指针 指向未知的内存地址 空指针 p = NULL 空指针一般用于条件判断的时候使用,即一个指针使用之后可以赋值为NULL,然后用作条件判断。 空指针其实也有指向的地址,就是0地址处。 万能指针 void * = &a,void * 是万能指针,可以指向任何的数据类型,然后如果想通过该指针操作数据 阅读全文
posted @ 2022-06-09 16:28 肖肖凯 阅读(44) 评论(0) 推荐(0)
摘要:int main(int argc, char *argv[]) argc:main函数接收的参数个数 argv:以字符串形式存储了main函数接收到的具体参数,其中argv[0]的值为可执行文件的名称。 阅读全文
posted @ 2022-06-09 15:51 肖肖凯 阅读(84) 评论(0) 推荐(0)
摘要:即头文件.h中声明函数和变量,被调函数写在特定的.c文件中,主函数所在的.c主文件一般名字与头文件相同。 为防止头文件重复包含有两种解决方案: 阅读全文
posted @ 2022-06-09 15:44 肖肖凯 阅读(101) 评论(0) 推荐(0)
摘要:函数分类 C语言中,可以分为系统函数和自定义函数两种。 系统函数,即C语言库函数,这是由编译系统提供的(编译系统是系统软件,提供了一系列二进制的库文件),可以直接使用,前提是要导入相关的头文件。 自定义函数就是自己定义的普通函数啦。 函数声明 如果自定义的函数在main函数的下边,则可能识别不到,这 阅读全文
posted @ 2022-06-09 15:27 肖肖凯 阅读(157) 评论(0) 推荐(0)
摘要:gets() && puts() 点击查看代码 #include<stdio.h> int main(){ char str[100]; gets(str); puts(str); return 0; } /* char *gets(char *s) 功能:从标准输入读入字符,保存到指针s指定的空间 阅读全文
posted @ 2022-06-09 15:08 肖肖凯 阅读(133) 评论(0) 推荐(0)
摘要:一维数组初始化 直接全部初始化,没啥好说的,对应位置赋值 int a[5] = {1,2,3,4,5} 初始化一部分,前两个元素初始化为1,2,后三个元素初始化为0 int a[5] = {1,2} 自动确定数组大小,此时数组大小就为3 int a[] = {1,2,3} 二维数组初始化 全部初始化 阅读全文
posted @ 2022-06-09 11:03 肖肖凯 阅读(93) 评论(0) 推荐(0)
摘要:查看当前日历:cal 加上-y选项则显示整年日历 显示或设置时间:date 查看进程信息:ps 动态显示进程:top top命令运行后,在指定的时间间隔更新显示信息,可以用-d参数来指定时间间隔。 top命令执行后,按以下键对显示结果排序: 终止进程:kill 格式 kill [-signal] p 阅读全文
posted @ 2022-06-08 19:15 肖肖凯 阅读(66) 评论(0) 推荐(0)
摘要:查看当前用户:whoami whoami用来查看当前使用的账号的用户名。 比如刚登陆上的账号是chkplusplus,那么whoami的输出就是chkplusplus,但是如果用su root切换到了root,那么whoami输出就是root。 可通过cat /etc/passwd查看系统用户信息 阅读全文
posted @ 2022-06-08 18:30 肖肖凯 阅读(104) 评论(0) 推荐(0)
摘要:查看文件命令ls ls功能为列出目录的内容,其用法是 ls [-选项] [参数],其中参数一般是一个目录文件。 ll命令是ls -all的缩写,用于以列表形式列出所有文件,包括隐藏文件。 ls命令的参数也可以不是目录,即ls命令可以与通配符配合使用 一般通配符作用如下: 输出重定向命令 > 与附加重 阅读全文
posted @ 2022-06-08 17:10 肖肖凯 阅读(87) 评论(0) 推荐(0)
摘要:Linux命令格式 分为三部分,命令名+选项+参数 查看命令帮助文档 命令名+help 用法是 命令名 --help,但是要注意不是所有命令都有这个选项。 man man可以用于命令的精确查找也可以用于命令的模糊查找,只需要调整一下顺序即可 精确查找格式 比如 man mkdir 模糊查找格式 比如 阅读全文
posted @ 2022-06-08 09:14 肖肖凯 阅读(56) 评论(0) 推荐(0)
摘要:文件权限 Linux是一个多用户系统,对于同一个文件来说,不同的用户处于不同的地位,有不同的访问权限。 文件权限有三种,读(r)、写(w)、执行(x)。 用10个字符来表示文件的权限,比如drwxrwxrwx,其中第一位的d表示文件类型,d就是目录的意思,然后第一组rwx表示文件所有者的权限,第二组 阅读全文
posted @ 2022-06-08 08:23 肖肖凯 阅读(74) 评论(0) 推荐(0)
摘要:Linux一切皆文件 Linux对数据文件,程序文件,设备文件,网络文件等的管理都抽象为文件,用统一的方式进行管理。 但是,Linux操作系统也必须区分文件类型,需要判断文件类型属于可执行文件,文本文件还是数据文件。 file 文件名,可以查看文件的类型。 Linux五种文件 Linux中共有5种6 阅读全文
posted @ 2022-06-07 23:19 肖肖凯 阅读(303) 评论(0) 推荐(0)
摘要:Unix/Linux采用树状文件系统 但是没有盘符的概念,它由目录和目录下的文件一起构成,且不使用驱动器这个概念,而是使用单一的根目录结构,所有分区都挂在单一的"/"根目录上。 Linux目录结构 阅读全文
posted @ 2022-06-07 23:08 肖肖凯 阅读(30) 评论(0) 推荐(0)
摘要:cpu调度与进程调度 调度指的是从就绪队列中找一个任务来执行,虽然一般认为线程是调度的最小单位,进程是资源分配的基本单位,从这里边也可以看成,调度的含义,其实就是切换指令执行序列,从一个线程到另一个线程,或从一个进程到另一个进程。 示例:FIFO与Priority 一个简单的调度思路是,谁先进入就绪 阅读全文
posted @ 2022-06-04 19:33 肖肖凯 阅读(660) 评论(1) 推荐(1)