
笔记
文章平均质量分 87
w_pab
这个作者很懒,什么都没留下…
展开
-
笔记24-3(C语言进阶 程序环境和预处理练习)
注:练习一写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换练习二写一个宏,计算结构体中某变量相对于首地址的偏移,并给出说明原创 2022-08-23 22:22:46 · 508 阅读 · 0 评论 -
笔记22-2(C语言进阶 动态内存管理练习)
当然,仅仅使用一个更长的类型是不足以解决根本问题的,这时候还需要一个判断:因为此时采用了 long long类型 的变量,所以 n 能够取到的最大值是超过。在未改变的状态下,变量state 处于“非法”状态,如果下面的返回值是0时,通过检查该变量的状态,未经改变就是“不合法”,即传入的字符串是异常状态下的。此处提供的思路选择了传址(即使用返回型参数):将两个在主函数内定义完毕的变量的地址传入函数,就可以在函数内部修改这两个变量的内容了。如果传入的字符串合法,只要改变 变量state 记录的值即可。原创 2022-08-21 17:22:27 · 310 阅读 · 0 评论 -
笔记21-4(C语言进阶 结构体练习)
情景:pointer被分配到多少字节的空间?}ps:%02x 意为以十六进制的形式输出,且只输出两位。接下来就是把二进制转换成十六进制了。原创 2022-08-09 11:14:32 · 775 阅读 · 0 评论 -
笔记24-2(C语言进阶 程序环境和预处理)
_FILE__进行编译的源文件__LINE__文件当前的行号__DATE__文件被编译的日期__TIME__文件被编译的时间文件当前所在的函数名__STDC__如果编译器遵循ANSI C,其值为1,否则未定义这些预处理符号都是语言内置的,通过它们,可以记录一些日志。语法定义符号举例为 register 这个关键字创建一个更简短的名字。;)用更形象的符号替换一种实现。case在写 case 语句时,自动写上 break。如果定义的 stuff 过长,可以分成几行写。...原创 2022-08-05 15:31:19 · 717 阅读 · 0 评论 -
笔记24-1(C语言进阶 程序环境和预处理)
目录 注:推荐书籍程序的翻译环境和执行环境编译和链接翻译环境编译预处理编译汇编链接运行环境/执行环境 本笔记参考:B站up 鹏哥C语言在ANSI C的任何一种实现中,存在两个不同的环境:翻译环境包含了两大步骤:在Linux系统下的编译过程展示(test.c):gcc test.c — 默认生成一个 a.out(可执行程序)。这个可执行程序(a.out)可以通过输入 .\a.out 的方式执行它。接下来首先解析预处理步骤,在预处理阶段,编译器完成的工作有:例如: 通过上面的例子我们可以发现,在预原创 2022-06-29 16:43:23 · 625 阅读 · 0 评论 -
笔记23(C语言进阶 文件)
目录注为什么使用文件什么是文件程序文件数据文件文件名什么是流?文件的打开和关闭文件指针文件的打开和关闭使用例文件的顺序读写函数使用①( fputc 和 fgetc - 字符)fputc函数 的使用fgetc函数 的使用函数使用②( fputs 和 fgets - 文本行)fputs函数 的使用fgets函数 的使用函数使用③( fscanf 和 fprintf - 格式化 )先看printf函数再看fscanf函数函数使用④( fwrite 和 fread - 二进制 )fwrite函数 的使用fread函原创 2022-06-16 16:06:20 · 350 阅读 · 0 评论 -
笔记22-1(C语言进阶 动态内存管理)
为什么存在动态内存分配动态内存函数的介绍malloc和freecallocrealloc常见的动态内存错误1.对NULL指针的解引用操作2.对动态开辟空间的越界访问3.使用free函数释放了非动态开辟的空间4.使用free函数释放一块动态开辟的内存的一部分5.对同一块动态开辟的空间,多次释放6.动态开辟的内存忘记释放(内存泄漏 - 比较严重)经典的笔试题(可供参考:《高质量C++/C 编程指南》)题目1:运行Test函数的结果?(p = (char*)ma原创 2022-05-31 21:59:57 · 823 阅读 · 0 评论 -
笔记21-3 (C语言进阶 通讯录)
要求1. 通讯录能够存放1000个人的信息每个人的信息:名字+年龄+性别+电话+地址2. 增加人的信息3. 删除指定人的信息4. 修改指定人的信息5. 查找指定人的信息6. 排序通讯录的信息思路前期的准备1.设置类型存储通讯录内的数据在 contact.h 内部(此处代码仅供参考)#define MAX_NAME 20#define MAX_SEX 10#define MAX_TELE 12#define M...............原创 2022-05-24 16:57:56 · 53760 阅读 · 0 评论 -
笔记21-2 (C语言进阶 自定义类型)
联合(共用体)联合体类型的定义联合也是一种特殊的自定义类型。这种类型定义的变量也包含一系列的成员,特征是这些成员共用同一块空间(所以联合也叫做共用体)。比如://联合类型的声明union Un{ char c; int i;};int main(){ //联合变量的定义 union Un un_1; //计算这个变量的大小 printf("%d\n", sizeof(un_1)); return 0;}打印结果:为原创 2022-05-22 10:07:06 · 193 阅读 · 0 评论 -
笔记21-1(C语言进阶 自定义类型)
结构体的声明结构体的基础知识|||结构体是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。struct tag{ member-list;}variable-list;实例struct Book{ char name[20]; int price; char id[12];}b4, b5, b6;//b4,b5,b6是全局的int main(){ //b1,b2,b3是局部变量 struct Book b1; ......原创 2022-05-21 15:40:10 · 370 阅读 · 0 评论 -
笔记20-2(C语言进阶 内存函数)
字符分类函数函数 如果函数的参数符合下列条件就返回真 iscntrl 任何控制字符 isspace 空白字符:空格' ',换页'\f',换行'\n',回车'\r',制表符'\t',垂直制表符'\v' isdigit 十进制数字0~9 isxdigit 十六进制数字,包括所有十进制数字,小写字母a~f,大写字母A~F islower 小写字母a~z isupper 大写字母A~Z isalpha 字母a~z或者A~原创 2022-05-09 21:28:25 · 187 阅读 · 0 评论 -
笔记20-1(C语言进阶 字符串函数介绍)
函数介绍strlensize_t strlen ( const char * str );工作原理字符串 '\0' 作为结束标志,strlen函数返回的是字符串中 '\0' 前面出现的字符串个数(不包含 '\0' )。 参数指向的字符串必须要以 '\0' 结束。 注意函数的返回值是size_t,是无符号的。实例#include<stdio.h>#include<string.h>int main(){ char arr[] = "abc";原创 2022-05-06 22:02:34 · 579 阅读 · 0 评论 -
笔记19* (C语言进阶 指针练习)
添加创建的变量可以通过free释放内存 - 动态内存开辟申请 - malloc使用释放 - free(变量不会被主动置为空指针,需要手动修改,如:int* p = malloc(40);//使用p指向的40个字节的空间free(P);注:free命令执行结束后,p依旧指向本来的地址。free命令不会把这个指针置为NULL。需要加上:p = NULL;...原创 2022-05-02 10:52:42 · 646 阅读 · 0 评论 -
笔记19-3(C语言进阶 指针进阶 练习)
例1 求打印结果(sizeof 求int a[]各种有关元素)int main(){ //整型数组 int a[] = { 1,2,3,4 }; printf("%d\n", sizeof(a));//打印结果:4*4 = 16 printf("%d\n", sizeof(a + 0));//打印结果:4/8 printf("%d\n", sizeof(*a));//打印结果:4 printf("%d\n", sizeof(a + 1));//打印结果:4/8 prin原创 2022-04-26 22:14:38 · 865 阅读 · 0 评论 -
笔记19-2(C语言进阶 指针进阶)
函数指针||| 顾名思义,函数指针就是指向函数的指针,即存放函数地址的指针。首先观察函数的地址int Add(int x, int y){ return x + y;}int main(){ //&函数名 - 取到的就是函数的地址 printf("%p\n", &Add); printf("%p\n", Add); return 0;}通过%p打印地址,结果发现函数确实存在地址。注意:此处对Add函数是否取地址(&),并没原创 2022-04-21 20:53:36 · 2345 阅读 · 0 评论 -
笔记19-1(C语言进阶 指针进阶)
指针就是给变量,用来存放地址,地址唯一标识一块内存空间。 指针的大小是固定的4/8个字节(32位平台/64位平台)。 指针是有类型的,指针的类型决定了:①指针的±整数的步长,②指针解引用操作时的权限。字符指针有一种指针的类型为字符指针 char*一般使用:int main(){ char ch = 'q'; char * pc = &ch; *pc = 'w'; return 0;}但是,字符指针不仅可以指向字符,还可以指向字符串:int main().原创 2022-04-16 22:28:33 · 1159 阅读 · 0 评论 -
笔记18(C语言进阶 数据的存储)
数据类型详细介绍基本的内置类型:char 字符数据类型 short 短整型 int 整型 long 长整型 long long 更长的整型 float 单精度浮点型 double 双精度浮点型 类型的意义:使用这个类型开辟内存空间的大小(大小决定了使用范围); 如何看待内存空间的视角。类型的基本归类整型家族(因为 char 存储的是字符的ASCII值,所以分类时,通常把char类型归为整型) ch.原创 2022-04-12 21:44:35 · 1682 阅读 · 0 评论 -
笔记17(C语言 实用调试技巧)
什么是bug?ps:第一次被发现的导致计算机错误的飞蛾,也是第一个计算机程序错误调试是什么?调试的重要性?||| 调试(英语:Debugging / Debug),又称除错,是发现和减少计算机程序和电子仪器设备中程序错误的一个过程。调试的基本步骤发现程序错误的存在 ( 1.程序员自己解决 2.测试人员测试软件 3.用户反馈 - 严重) 以隔离、消除等方式对错误进行定位 确定错误发生的原因 提出纠正错误的解决办法 对程序错误予以改正,重新测试Debug和Rel...原创 2022-04-05 16:01:59 · 1912 阅读 · 0 评论 -
笔记16 (C语言 结构体初识)
结构体的声明结构的基本知识||| 就如同数组是相同类型的元素的集合,结构也是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。(方便描述复杂对象)结构的声明struct tag{ member-list;}variable-list;如:描述一个学生struct Stu{ //成员变量 char name[20];//描述名字 int age;//描述年龄 char id[20];//描述学号}s1, s2;int main()...原创 2022-04-01 22:10:00 · 1286 阅读 · 0 评论 -
笔记15(C语言 指针初阶)
指针是什么?在计算机科学中,指针(pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该内存单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。(所以平时提到的内存单元的编号、内存单元的地址和指针其实是同一个东西)内存 地址(即内存单元的编号) 一个字节 0xFFFFFFFF 一个字节 0xFFFFFFFE …… ……原创 2022-03-30 15:47:27 · 1164 阅读 · 0 评论 -
笔记14-1(C语言 操作符和表达式)
操作符分类算数操作符 (+ - * / &) 移位操作符 (>> <<) 位操作符 (& | ^) 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号操作符 下标引用、函数调用和结构成员算数操作符+ - * / % 对于 % 操作符除了 % 操作符,其它几个操作符可以作用于整数和浮点数 % 操作符的两个操作数必须是整数,返回的是整除之后的余数。如int main()...原创 2022-03-20 11:30:51 · 647 阅读 · 0 评论 -
笔记13-2(C语言 扫雷游戏)
要求与准备test.c - 扫雷游戏的测试 game.c - 游戏的函数实现 game.h - 游戏的函数的声明菜单代码原创 2022-03-17 09:56:00 · 5338 阅读 · 0 评论 -
笔记13-1(C语言 三子棋)
数组的应用实例1:三子棋分为三个模块test.c 测试游戏的逻辑game.h 关于游戏相关的函数声明,符号声明,头文件的包含game.c 游戏相关函数的实现主函数首先要有菜单,告诉玩家如何选择分出情况: 1.如果想玩游戏 - 弹出游戏界面 2.如果不想玩游戏 3.如果输入错误代码:int main(){ int input = 0; do { menu(); printf("请选择: "); sca...原创 2022-03-16 11:36:27 · 5595 阅读 · 2 评论 -
笔记13(C语言 数组)
注:本笔记参考B站up 鹏哥C语言的视频一维数组的创建和初始化数组的创建数组,就是一组相同类型的元素的集合。数组的创建方式:type_t arr_name [const_n];//type_t 是指数组的元素类型;//const_n 是一个常量表达式,用来指定数组的大小(小知识:C99语法下支持变长数组,可以用变量来指定数组的大小。)实例:#include<stdio.h>int main(){ int arr[8]; char a..原创 2022-03-15 11:03:40 · 631 阅读 · 0 评论 -
笔记12-1(C语言 函数递归)
添加推荐网站: 1.stackflow认识递归什么是递归程序调用自身的编程技巧称为递归(recursion)。递归作为一种算法在程序设计语言中广泛应用。一个程序或函数在其定义或说明中直接或间接调用自身的一种方法,它通常把一个大型、复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归测略只需要少量的程序就可以描述出解题过程所需要的多次重复运算,大大减少了程序的代码量。递归的主要思考方式在于:把大事化小。例子:#include<stdio.h>..原创 2022-03-13 10:52:14 · 967 阅读 · 0 评论 -
笔记12(C语言 函数)
函数是什么?维基百科中对函数的定义:子程序·在计算机科学中,子程序是一个大型程序中的某部分代码,由一个或多个语句块组成,它负责完成某项特定任务,而且相较于其它代码,具备相对的独立性。·一般会有输入参数并有返回值,提供对过程的封装和对细节的隐藏。这些代码通常被集成为软件库。C语言中函数的分类:1.库函数2.自定义函数库函数为什么会有库函数?1.被频繁使用的功能:将信息按照一定的格式打印到屏幕上(printf);2.频繁的拷贝字符串的工作(strcpy);3.原创 2022-03-11 17:16:02 · 636 阅读 · 0 评论 -
添加1
1.C99 标准中引用了一个概念:变长数组支持数组创建的时候,用变量指定大小,但是这个数组不能被初始化2.一般写函数时不建议把函数的名字写成全大写3.原创 2022-02-23 21:27:16 · 83 阅读 · 0 评论 -
笔记4(C语言)
#include <studio.h>int global = 2019;//全局变量int main(){ int local = 2018;//局部变量 int global = 2020;//局部变量 printf("global = %d\n", global); return 0;}上面“global”局部变量的定义是没问题的。当局部变量和全局变量同名时,局部变量优先使用。变量的作用域和生命周期作用域(scope):通常情..原创 2022-01-08 15:22:44 · 265 阅读 · 0 评论 -
写博客的第一天
学习C语言1.写博客(文章) 包括对技术学习的理解、心得等。通过写博客记录学习过程和心得。 推荐:优快云/博客园(更推荐优快云)2.github github的作用不止是托管代码,更重要的是托管开源项目。 另一方面,github也可以通过提交代码来显示自己的贡献值,这会为自己未来找工作提供优势。 (不过国内github似乎不好登入,也可以用码云。)...原创 2021-10-31 22:23:36 · 89 阅读 · 0 评论