博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 9 10 11 12 13 14 下一页

2023年3月13日

摘要: fread,fwrite // fread,fwrite详解 // fread, fwrite - binary stream input/output // 二进制流输入输出函数,在linux下不区分二进制流、文本流 size_t fread(void *ptr, size_t size, siz 阅读全文

posted @ 2023-03-13 06:00 乔55 阅读(10) 评论(0) 推荐(0) 编辑

摘要: getline ssize_t getline(char **lineptr, size_t *n, FILE *stream); 功能:从给定的输入流读取内容,直到遇到换行符停止读操作,并返回结果 返回值: 特点: 可输入空白符(空格、制表符),但不包括换行符 触发getline结束的那个换行符实 阅读全文

posted @ 2023-03-13 05:59 乔55 阅读(6) 评论(0) 推荐(0) 编辑

摘要: gets // gets详解 char* gets(char* str); // reads a line from stdin into the buffer pointed to by s // until,either a terminating newline or EOF // which 阅读全文

posted @ 2023-03-13 05:59 乔55 阅读(32) 评论(0) 推荐(0) 编辑

摘要: printf // printf详解 int printf("const char* format,..."); // 输出格式 %m.pX - m与p,用来控制输出格式 - X,是一个字母,表示以某种方式解释内存空间最 - m:含义是最小字段宽度,即用来控制待显示数值的最少字符个数 - 若数值的实 阅读全文

posted @ 2023-03-13 05:59 乔55 阅读(17) 评论(0) 推荐(0) 编辑

摘要: getchar // getchar详解 int getchar(void); // getchar() return the character read as an unsigned char cast to an int // or EOF on end of file or error // 阅读全文

posted @ 2023-03-13 05:58 乔55 阅读(153) 评论(0) 推荐(0) 编辑

摘要: scanf int scanf(const char* format,...); // scanf详解 - scanf本质上是一个模式匹配函数,试图将输入的字符与控制格式匹配 - 处理过程:从左到右依次处理转换说明 - 若处理成功,继续处理后续转换说明 - 若处理失败,则返回当前已经正确处理的转换说 阅读全文

posted @ 2023-03-13 05:58 乔55 阅读(18) 评论(0) 推荐(0) 编辑

摘要: 文件的回车与换行 回车:将光标跳到行首,对应ASCII值是13 换行:将光标跳到下一行,对应ASCII值是10 windows系统的换行其实是:回车+换行, 阅读全文

posted @ 2023-03-13 05:57 乔55 阅读(173) 评论(0) 推荐(0) 编辑

摘要: 标准输入输出对象 cin为istream类型的对象,称为标准输入对象 cout为ostream类型的对象,称为标准输出对象 cerr通常用来输出警告和错误信息,称为标准错误 clog用来输出程序运行时的一般信息 C++输入输出 C++并未定义任何的输入输出语句,它用一个标准库来提供io机制 istr 阅读全文

posted @ 2023-03-13 05:57 乔55 阅读(46) 评论(0) 推荐(0) 编辑

摘要: 文件的关闭 释放该文件占用的内存资源 防止往文件中写内容时写入不全 文件写入时并不瞬时写入文件,而是先写入相应的缓冲区,缓冲区未满不会自动更新到文件中 当及时关闭时,就会将写 入缓冲区的文件内容更新到文件中 fopen FILE *fopen(const char *path, const char 阅读全文

posted @ 2023-03-13 05:56 乔55 阅读(28) 评论(0) 推荐(0) 编辑

摘要: 阅读全文

posted @ 2023-03-13 05:56 乔55 阅读(6) 评论(0) 推荐(0) 编辑

摘要: 文件的分类 根据数据组织形式,文件分为2种 ASICC文件,即文本文件:每个字节存储一个ASCII码 二进制文件,把内存中数据按照其在内存中的存储形式原样输出到磁盘上存储 文件流 文本流:流动着的字符序列 二进制流:流动着的二进制序列 标准输入流:stdin,针对标准输入键盘 标准输出流:stdou 阅读全文

posted @ 2023-03-13 05:56 乔55 阅读(112) 评论(0) 推荐(0) 编辑

摘要: 阅读全文

posted @ 2023-03-13 05:56 乔55 阅读(2) 评论(0) 推荐(0) 编辑

2023年3月12日

摘要: 缓冲区的基本概念 // 缓冲区概念 - 缓冲区作用:用户输入的的字符被收集在buffer这个临时缓冲区 用户输入的字符被收集并存储在一个称为buffer的临时缓冲区。当按下enter,程序才可使用用户输入的这些字符 缓冲区分类 完全I/O:当缓冲区被填满时才刷新缓冲区(即内容被传输到目的地) 完全行 阅读全文

posted @ 2023-03-12 22:20 乔55 阅读(74) 评论(0) 推荐(0) 编辑

摘要: 链接 阅读全文

posted @ 2023-03-12 22:19 乔55 阅读(10) 评论(0) 推荐(0) 编辑

摘要: C++比C有所增加 register增强 C 请求编译器将局部变量存储于寄存器中,寄存器中变量操作速度更快 但C无法取得register变量地址 C可通过register关键字人为地优化代码,提高效率 C++ 仍然支持register,且可取register变量地址 C++编译器有自己的优化方式,不 阅读全文

posted @ 2023-03-12 22:18 乔55 阅读(12) 评论(0) 推荐(0) 编辑

摘要: 预处理包含3个方面 宏定义 不带参数的宏定义:#define SIZE 20 字符串内部,即使与宏名相同,也不能进行宏替换 带参数的宏定义 #define S(r) (r)*(r); 宏的参数没有类型这个说法,只能将其看作符号,宏展开时代入指定字符 宏替换只占用编译时间,不占用运用时间,而函数调用占 阅读全文

posted @ 2023-03-12 22:18 乔55 阅读(51) 评论(0) 推荐(0) 编辑

摘要: 编译过程 预编译:gcc -E hello.c -o hello.i 把#include包含的文件替换到c文件中,即头文件展开。并不检查语法是否正确。 进行宏定义替换:预编译后,将宏名替换为宏值 在.c源文件中的注释,在预编译后,会在.i文件中变成空行 预编译后仍是源文件,也可叫预处理文件 编译:g 阅读全文

posted @ 2023-03-12 22:18 乔55 阅读(2) 评论(0) 推荐(0) 编辑

摘要: 命名空间基本使用 // 命名空间的定义 - 有名命名空间:namespace AAA{int a;} - 匿名命名空间:namespace {int a;} - 扩展命名空间:namespace AAA{int b;},对原来AAA扩展 // 命名空间的合并 - 同名命名空间,可以在一个模块内出现多 阅读全文

posted @ 2023-03-12 22:16 乔55 阅读(37) 评论(0) 推荐(0) 编辑

摘要: 位运算举例 #define BIT(i) (1<<(i)) // 定义左移宏函数,1左移i位 // 第0位:BIT(0),将1左移0位,24个0,0000,0001 // 第1位:BIT(1),将1左移1位,24个0,0000,0010 // 第2位:BIT(2),将1左移1位,24个0,0000, 阅读全文

posted @ 2023-03-12 22:15 乔55 阅读(12) 评论(0) 推荐(0) 编辑

摘要: 移位运算符 左移:右边补0 右移 若为无符号数或非负数,则左边补0 若为负数,C语言无统一规定,有的补1,有的补0,得看实现机制 为了代码可移植性,不要对带符号数进行移位运算 位运算的算法举例 // 判断是否为奇数 bool isOdd(int n) { return n & 0x1 } // 判断 阅读全文

posted @ 2023-03-12 22:15 乔55 阅读(7) 评论(0) 推荐(0) 编辑

摘要: 移位操作举例 #define BIT(i) (1<<(i)) // 定义左移宏函数,1左移i位 // 第0位:BIT(0),将1左移0位,24个0,0000,0001 // 第1位:BIT(1),将1左移1位,24个0,0000,0010 // 第2位:BIT(2),将1左移1位,24个0,0000 阅读全文

posted @ 2023-03-12 22:15 乔55 阅读(2) 评论(0) 推荐(0) 编辑

摘要: new详解 // new用法举例 int* p = new int; // 动态分配对象,若未人为给定初值,则初值未定义;p指向堆上新开辟空间 string* mystr = new string; // 空字符串,调用了string的默认构造函数 // new赋初值 int* p = new in 阅读全文

posted @ 2023-03-12 22:15 乔55 阅读(20) 评论(0) 推荐(0) 编辑

摘要: new与delete运算符 new是以具体类型为单位进行内存分配的,故可以分配时直接同时初始化新建变量 而malloc则是以字节为单位分配的,无法直接同时初始化 malloc不会调用对象的构造函数,而new则会 malloc创建对象时,需要在类中定义一个初始化数据成员的成员数 用new申请空间的用法 阅读全文

posted @ 2023-03-12 22:14 乔55 阅读(4) 评论(0) 推荐(0) 编辑

摘要: 使用规则 先看优先级,优先级高的先算,优先级低的后算 若优先级相同,则看结合律,看是左结合还是右结合 求值顺序与优先级和结合律都没有关系 满足右结合律的常用运算符 求反运算符 赋值运算符 条件运算符 混合运算规则 计算机只能对同类型数据运算,不同类型数据只能先执行类型转换再运算 只要发生类型转换,就 阅读全文

posted @ 2023-03-12 22:14 乔55 阅读(11) 评论(0) 推荐(0) 编辑

摘要: 运算符详解 最高级运算符:左结合 成员运算符-点号: 成员运算符-箭头: 中括号小括号:分别是下标、函数调用、类型构造 次高级运算符:右结合 后置递增递减: typeid:类型id explicit cast:类型转换 第3级运算符:右结合 单目运算符: 前置递增递减 逻辑非 正号、负号 星号解引用 阅读全文

posted @ 2023-03-12 22:14 乔55 阅读(66) 评论(0) 推荐(0) 编辑

摘要: 阅读全文

posted @ 2023-03-12 22:14 乔55 阅读(6) 评论(0) 推荐(0) 编辑

摘要: 小端对齐与大端对齐 一个二进制数,它的高位存放在内存高地址,低位存放在内存低地址 int a=10000; // 十进制的10000,用16进制表示为:00 00 27 10 // 内存中显示是:0x010FF798 10 27 00 00 cc cc cc。。 // 0x010FF798 存储的是 阅读全文

posted @ 2023-03-12 22:13 乔55 阅读(39) 评论(0) 推荐(0) 编辑

摘要: ## 基本概念 ```cpp // 存储分类 1. // 静态存储分配:对于我们定义的变量,通常,编译器在编译时都可以根据变量的类型知道所需要的内存空间的大小,系统从而在适当的时候为它们分配确定的存储空间 2. // 动态存储分配:有些操作对象只有在程序运行时才能确定,这样编译器在编译时就无法为它们 阅读全文

posted @ 2023-03-12 22:13 乔55 阅读(18) 评论(0) 推荐(0) 编辑

摘要: 内存布局详解 // 内核区 // 保存进程环境变量区 // 保存命令行参数区:int main(int argc,char** argv); // 栈区 1. 由编译器分配和释放 2. 存放的值有:局部变量、形参、const修饰的局部常量 // 共享库+C标准库+系统IO函数 // 堆区 // 全局 阅读全文

posted @ 2023-03-12 22:12 乔55 阅读(28) 评论(0) 推荐(0) 编辑

摘要: 引用基本概念 // 基本概念 - 引用声明:为一个已经存在的对象起一个别名,且可起多个别名。引用一经声明不可变更 - 引用只有声明没有定义,且不分配内存,引用只是一种声明,声明其与实体的关系 - 引用ref的值就是其绑定对象的值,引用ref的地址&ref就是其绑定对象的地址 - 不能声明对引用的引用 阅读全文

posted @ 2023-03-12 21:18 乔55 阅读(52) 评论(0) 推荐(0) 编辑

摘要: 指针详解 // 指针的初值 1. 指针无须在定义时赋初值 2. 在块作用域内定义的指针未被初始化时其初值未定,与内置类型一样 // 指针的指向 1. 一般情况下,指针的类型必须与所指的数据类型一致,但以下情况除外 - 允许一个指向常量的指针指向一个非常量对象上。引用同理 - void*万能指针可指向 阅读全文

posted @ 2023-03-12 21:17 乔55 阅读(43) 评论(0) 推荐(0) 编辑

摘要: ## 阅读全文

posted @ 2023-03-12 21:00 乔55 阅读(5) 评论(0) 推荐(0) 编辑

摘要: ## 二进制 ## 八进制 ```cpp 1. // 以0打头,如0123,表示8进制的123 ``` ## 十六进制 ```cpp 1. // 以0x或0X打头,如0x123,表示16进制的123 ``` ## 进制转换 ```cpp 1. // 将10进制转换为x进制:只需要将该数除以x取余,依 阅读全文

posted @ 2023-03-12 20:59 乔55 阅读(16) 评论(0) 推荐(0) 编辑

摘要: extern关键字 默认状态下,const对象仅在本文件内有效:const int x = 10; 编译器在编译过程把用到x变量的地方都将其替换成10 为了完成替换,编译器就得知道变量初始值 若程序包含多个文件,则每个用到了const对象x的文件都必须访问得到x初始值才行 如此,就必须在每个用到x的 阅读全文

posted @ 2023-03-12 20:58 乔55 阅读(6) 评论(0) 推荐(0) 编辑

摘要: 文件的跨文件使用 - extern int g_a; 在本文件中做个声明,即可在文件中使用外部全局变量g_a, - - 其含义是该变量已经在其他文件中定义过,不必为其分配额外的内存空间 - static int g_a;该全局变量只能在本文件中使用,不可跨文件使用 函数的跨文件使用 - 内部函数:只 阅读全文

posted @ 2023-03-12 20:41 乔55 阅读(14) 评论(0) 推荐(0) 编辑

摘要: 变量概念 变量提供一个具名的、可供程序员操作的存储空间 变量的数据类型决定了所占的内存空间大小、存储方式、存储范围、参参与的运算 对象是一块能存储数据,并具有某种类型的内存空间 变量的分类 按生命周期分类 静态存储变量:程序运行期间分配固定的存储空间的变量 动态存储变量:程序运行期间根据需要进行动分 阅读全文

posted @ 2023-03-12 20:29 乔55 阅读(26) 评论(0) 推荐(0) 编辑

摘要: 宏常量详解 // 宏常量与const常量的区别 1、发生时机不同:前者在预处理阶段,后者在编译阶段 2、类型检查:宏定义没有类型检查、语法检测,只是在预处理阶段做了简单的文本替换,虽然也有编译阶段,但是在编译阶段不报错,将报错的时机延迟到了。const常量是有类型检查、语法检测的,更安全 带参宏函数 阅读全文

posted @ 2023-03-12 10:45 乔55 阅读(39) 评论(0) 推荐(0) 编辑

摘要: 基本概念 // 发生隐式类型转换的情景 - 给无符号类型赋予一个超出其范围的初始值时,就会发生隐式类型转换 C语言强制类型转换 C++强制类型转换 // static_cast 1. 用于内置类型的转换,不可用于内置类型指针的转换:char* pc=static_cast<char*>(pi) 2. 阅读全文

posted @ 2023-03-12 10:32 乔55 阅读(25) 评论(0) 推荐(0) 编辑

摘要: char char的最小尺寸为8bit,一个char的大小与机器字长一样 unsigned char; // 可表示范围是$[0,2^{8}-1]$ char; // 可表示范围是$[-2^{7},2^{7}-1]$ 我们使用的char是否带符号是未定的,由我们使用的编译器决定 算术表达式中尽量不要 阅读全文

posted @ 2023-03-12 09:52 乔55 阅读(14) 评论(0) 推荐(0) 编辑

摘要: typedef概念 typedef用来定义类型名,且是对已经存在的数据类型定义别名,没有创建新的类型 typedef是编译时处理的,预处理,编译,汇编,链接 typedef常见用法 定义数组类型 常规定义数组的方法:int arr[10]; 用typedef定义数组:typedef int arr[ 阅读全文

posted @ 2023-03-12 09:41 乔55 阅读(2) 评论(0) 推荐(0) 编辑

上一页 1 ··· 9 10 11 12 13 14 下一页