c学习笔记
文章平均质量分 66
silent碎月
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c学习笔记 第17章 高级数据表示 20210414
链表和数组 数组: 优点: c直接支持 提供随机访问、 缺点: 在编译时确定大小 插入和删除元素很费时 链表: 优点: 运行时确定大小 快速插入和删除元素 缺点: 不能随机访问 用户必须提供编程支持 数组可以直接使用数组下标直接访问数组中的任意元素, 这叫做随机访问(random access), 对链表而言, 必须从链表首节点开始逐个访问, 这称之为顺序访问(sequential access). 若要查找链表中的特定项, 一种算法是顺序查找(ssequential search)(可以使用并发编程,原创 2021-04-15 22:30:44 · 280 阅读 · 0 评论 -
c学习笔记 第17章 高级数据表示 20210410
队列ADT c语言中以抽象数据类型方法变成有以下三步: 以抽象通用的方式描述一个类型, 包括该类型的操作 设计一个函数接口表示这个新类型 编写具体的代码实现接口 定义队列抽象数据类型 队列(queue)是具有特殊属性的链表 只能将新项添加到链表的末尾 只能从链表的开头移除项。 队列是一种“先进先出”(first in, first out, 缩写为FIFO)的数据形式 | 类型名 | 队列 | | 类型属性 | 可以储存一系列项 | | 类型操作 | 初始化队列为空 | 确定队列为空 确定队原创 2021-04-14 17:28:44 · 230 阅读 · 0 评论 -
c学习笔记 第17章 高级数据表示 20210408
建立接口 简单链表有两个部分第一部分是如何表示数据, 第二部分是描述实现ADT操作的函数。 接口设计应尽量与ADT描述一致 #define TSIZE 45 struct film { char title[TSIZE]; int rating; }; typedef struct film Item; 定义完毕Item后, 需确定如何储存这种类型的项 typedef struct node { Item item; struct node * next; } Node; typedef Node原创 2021-04-09 19:44:42 · 246 阅读 · 0 评论 -
c 学习笔记 c预处理器和c库 清明节篇
c预处理器在程序执行之前查看程序, 根据预处理指令, 将符号缩写替换为表示的内容, 预处理器可以包含程序需所需的其他文件, 选择让编译器查看哪些代码。基本上预处理器工作只是把一些文本转换为其他文本。 翻译程序的第一步 预处理之前编译器会对程序作出一些翻译处理:编译器将源文件中出现的字符映射, 该过程处理多字节字符和三字符序列; 随后编译器定位每个反斜杠后面跟着换行符的实例, 并删除他们, 将数个物理行(physical line)转换成一个逻辑行(logical line); 随后编译器把文本划分为预处理记原创 2021-04-08 20:44:37 · 187 阅读 · 0 评论 -
c学习笔记 20210406 c预处理库和c库
_Noreturn函数(c11) c99时, inline是唯一的函数说明符, c11新增第二个函数说明符_Noreturn, 表明调用完成后函数不返回主调函数, exit()函数是_Noreturn函数的一个示例, 该函数不会把控制返回主调函数, 告诉用户以免滥用该函数, 通知编译器可优化一些代码 C库 访问C库 其取决于实现, 需了解当前系统的 一般情况 自动访问 一些系统只需编译程序, 就可使用常见的库函数 文件包含 可以通过#include 指令包含定义宏参数的文件, 通常类似的宏都放在合适名称的头原创 2021-04-07 21:22:58 · 227 阅读 · 0 评论 -
c学习笔记 第17章:高级数据表示 20210331
c将指针和int类型都储存为整数, 但两种类型可进行有效操作不同。 数据表示 #include <stdio.h> #include <limits.h> #include <stdbool.h> #include <string.h> #define TSIZE 45 #define FMAX 5 struct film { char title[TSIZE]; int rating; }; int main(void) { struct film原创 2021-04-01 18:38:57 · 227 阅读 · 0 评论 -
C学习笔记 位操作 20210330
用法: 关闭位(清空位) 假设mask只有1号位为1 flags = flags & ~mask; mask中为1的位都被设置清空 简化形式: flags &= ~mask; 用法: 切换位 使用按位异或运算符。如果mask 为1, 1^ mask 为0, 0^mask为1. (00001111) ^ (10110110) // 结果为 (10111001) 用法: 检查位的值 if ((flags & mask) == mask) puts("Wow"); 如果mas原创 2021-03-30 23:20:10 · 407 阅读 · 1 评论 -
c学习笔记 位操作 20210329
inline 内联函数(c++, c): inline只适合涵数体内代码简单的函数数使用,不能包含复杂的结构控制语句例如while、switch,并且内联函数本身不能是直接递归函数(自己内部还调用自己的函数) inline关键字作用就是直接把函数语句复制到调用函数的地方。 inline可以避免函数被频繁调用,不断地有函数入栈,造成栈空间或栈内存的大量消耗 二进制数、位、 字节 二进制整数 c用字节(byte)表示储存系统字符集的大小, 一字节8位, 即八位组(octet), 编号为七的称为高阶位(hig原创 2021-03-29 21:04:40 · 203 阅读 · 0 评论 -
c学习笔记 结构和其他数据形式 210210326
枚举类型(enumerated type) 可以用enum可以创建一个枚举类型(enum常量是int类型, 只要能使用int型的地方就可以使用枚举类型) 其语法结构与结构的语法相同 enum spectrum {red, orange, yellow, green, blue, violet}; enum spectrum color; color 的值可能为red、orange、yellow等, 这些符号称之为枚举符(enumerator) int c; color = blue; if (color原创 2021-03-26 19:40:02 · 250 阅读 · 0 评论 -
c学习笔记 结构和其他数据形式 20210325
结构, 指针和malloc() 使用malloc()分配内存, 在结构中使用指针处理字符串就比较合理 struct namect{ char * fname; char * lname; int letters; }; void getinfo (struct namect * pst) { char temp[SLEN]; printf("Please enter your first name.\n"); s_gets(temp, SLEN); pst -> fname = (ch原创 2021-03-25 20:58:20 · 241 阅读 · 0 评论 -
c学习笔记 结构和其他数据形式 20210318
建立结构声明 struct book{ char title[MAXTITL]; char author[MAXAUTL]; float value; }; 关键字struct表明跟在其后的是一个结构, 后面是一个可选的标记,随后程序可使用该标记引用该结构 struct book library; 定义结构变量 ...原创 2021-03-23 20:04:52 · 155 阅读 · 0 评论 -
c学习笔记 文件输入/输出 20210315
标准I/O的机理 第一步:调用fopen()打开文件, fopen()在打开文件的同时创建了一个缓冲区(读写模式下两个)以及一个包含文件和缓冲区的结构, 同时返回一个指向该结构的指针,若把指针赋给一个指针变量fp, 文本模式下打开, 获得一个文本流; 二进制模式则为二进制流。 fopen()创建的结构通常包含一个指定流中当前位置的文件位置指示器, 错误和文件结尾的指示器, 一个指向缓冲区的指针, 一个文件标识符和一个计数器(统计实际拷贝进缓冲区的字节数)。 第二步:文件输出, 调用一个定义在stdio.h中原创 2021-03-15 17:54:43 · 260 阅读 · 0 评论 -
c学习笔记 文件输入/ 输出 20210314
与文件进行通信 文本模式和二进制模式 c提供两种访问文件的途径:二进制模式和文本模式。二进制模式下可访问文件的每个字节。 MS-DOS模式下, 用\r\n表示新的一行, Ctrl+z表示文件的结束。 I / O级别 底层I/O(low-level I/O)和标准高级I/O(standard high-level I/O). c标准只支持标准I/O包, 但是c标准建立了可移植的I/O模型。 标准文件 c程序自动会打开三个文件:标准输入(standard input), 标准输出(standard output原创 2021-03-14 20:31:16 · 342 阅读 · 0 评论 -
c笔记 存储类别, 链接和内存管理 2021030309
ANSI C类型限定符 volatile类型限定符 volatile类型限定符限制变量不放进寄存器,该过程称为高速缓存(caching)(进高速缓存的变量的值不可改变),警告编译器不要进行假定的优化。 volatile限定符告知计算机,代理可改变该变量的量。 volatile int locl; /* locl 是一个善变的量*/ volatile int * ploc /*ploc是一个指向易变位置的指针*/ const和volatile 可同时使用, 使变量设置为程序不可改变, 但通过代理可以改变。原创 2021-03-09 16:00:18 · 204 阅读 · 0 评论 -
c笔记 存储类别, 链接与内存管理 20210306
存储类别 c语言储存的每个值都占用一定内存(即对象(object)), 对象可储存复数个值, 储存适当值时一定具有相应的大小。 访问对象通过声明变量实现。 int entity = 3; int *pt = &entity; int ranks[10]; 创建标识符(identifier)用来指定(designate)特定对象的内容。 pt是标识符,其指定了一个储存地址的对象;pt并非标识符,然而确实指定了一个对象, 与entity指定的对象相同。指定对象的表达式称为左值,entity与pt都是原创 2021-03-06 20:08:34 · 293 阅读 · 0 评论 -
c语言学习笔记 20210301
ctype.h字符函数和字符串 #include <stdio.h> #include <ctype.h> #define LIMIT 81 void ToUpper(char*); int PunctCount(const char*); int main(void) { char line[LIMIT]; char* find; puts("Please enter a line:"); fgets(line, LIMIT, stdin); find = strch原创 2021-03-01 23:29:26 · 183 阅读 · 0 评论 -
c学习笔记 20210228
@[TOC] 20210228 字符串排序 #include <stdio.h> #include <string.h> #define SIZE 81 #define LIM 20 #define HALT "" void stsrt(char* strings[], int num); int main(void) { char input[LIM][SIZE]; char* ptstr[LIM]; //指针数组 int ct = 0; int k; printf原创 2021-03-01 17:04:56 · 188 阅读 · 0 评论 -
c 20210224
C学习笔记0224sprint函数strchr函数strpbrk函数strrchr函数strstr函数strlen函数 sprint函数 声明在stdio.h中,可将多个字符串组合,赋予一个字符串变量 char first[20]; char last[20]; double prise; sprintf(format,"%s, %-19s: $%6.2f\n", last, first, prize); strchr函数 查找字符串中是否有指定字符,若有则返回首次出现的地址,若无则返回空指针 char原创 2021-02-24 18:25:52 · 245 阅读 · 0 评论
分享