![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C语言学习笔记
文章平均质量分 69
C语言学习过程中的记录
xiaoqiudao
这个作者很懒,什么都没留下…
展开
-
C语言 文件读写
文件的分类: 文本文件: 储存的是ASCII码值的二进制 二进制文件:储存的是数据的补码文件IO: FILE *fopen(const char *path, const char *mode); 功能:打开或者创建文件 path:文件的路径 mode:打开模式 r 以只读权限打开文件,如果该文件不存在,则打开失败,返回空指针FILE* frp = fopen("./test.txt","r"); if(NULL == frp){ prrror("fopen");//原创 2021-06-07 10:38:38 · 151 阅读 · 0 评论 -
预处理 & 条件变量 & 宏
预处理指令程序员所编写的代码并不能被真正编译器所编译,所以需要一段程序把代码翻译一下。翻译的过程叫做预处理,被翻译的代码叫做预处理指令,以#开头的都是预处理指令。查看预处理的结果: gcc -E code.c 直接把预处理结果显示到终端上 gcc -E code.c -o code.i 把预处理的结果储存到code.i 文件中预处理指令的分类: #include 文件包含 #include <> 从系统指定的目录下查找并导入头文件 #include “” 先从文件原创 2021-06-07 10:55:38 · 481 阅读 · 4 评论 -
C语言 字符串常用函数
字符串的常用函数:功能:计算字符串长度,但是结果不包括’\0’返回值:返回字符串中字符的个数#include <string.h>(size_t strlen(const char *s);功能:把src拷贝到dest中,相当于给dest赋值返回值:dest(链式调用)char *strcpy(char *dest,const char *src);功能:从src位置中拷贝n个字节到dest中void *memcpy(void *dest, const void *src,原创 2021-06-06 16:13:09 · 142 阅读 · 0 评论 -
malloc & 字符串
malloc内存管理机制: 当首次使用malloc申请内存时,malloc会向操作系统申请内存,操作系统会直接给malloc分配33页(一页 = 4096字节)内存交给malloc管理。但是不意味着你可以越界访问,因为malloc可能会把使用权分给”其他人“,这就会导致脏数据。每个内存块之间都会有一些空隙(4~12),这些空隙一些是为了内存数据对齐(加快读取),其中一定会有4个字节是用于记录malloc维护信息,这些维护信息决定了下次malloc分配内存的位置,以及借助这个维护信息计算出每个内存块的大原创 2021-06-06 16:11:50 · 2712 阅读 · 0 评论 -
指针数组与数组指针 & 堆内存
指针数组与数组指针: 指针数组:是由指针组成的数组,它的成员都是指针变量 类型* arr[长度];int arr[10] = {1,2,3,4,5,6,7,8,9,10};int* arrp[10];for(int i = 0; i<10; i++){ arrp[i] = &arr[i]; printf("%d %d\n",*arrp[i],arr[i]);} 数组指针:专门执行数组的指针 类型 (*arr)[长度];int arr[5] =原创 2021-06-06 16:05:36 · 204 阅读 · 0 评论 -
初识指针 & 练习
什么是指针:指针是一种特殊的数据类型,使用它可以定义指针变量,指针变量中存储的是整型数据,代表了内存的编号,通过这个编号可以访问到对应的内存。为什么使用指针:1、由于函数与函数之间是相互独立的,但是有些时候需要共享变量 传参是单向值传递 全局变量尽量少用,容易命名冲突 使用数组还需要传递长度 函数的命名空间是相互独立的,但是地址空间是同一个,所以指针可以解决这个问题2、由于函数传参是值传递(内存拷贝),对于字节数较多的变量,值传递的效率比较低,如果传递的是变量的地址,只需要传原创 2021-06-06 16:02:07 · 89 阅读 · 0 评论 -
进程映像 & 类型限定符 & 递归
设计函数的准则:一个函数最好只解决一个问题,这样可以降低出错率,提高可读性。最好不要依赖其他函数。(降低耦合性)数据由调用者提供,返回结果给调用者(提高通用性)要考虑调用者提供的非法数据,可以通过返回值方式告诉调用者,后者把可能出现的情况通过注释的方式写明白(健壮性)进程映像:程序:储存在磁盘上的可执行文件(二进制文件、脚本文件)进程:正在系统中运行的程序进程映像:指的是进程内存的分布情况text 代码段(只读段): 存储二进制指令、常量,权限是只读,强制修改会产生段错误data 数原创 2021-06-06 16:00:58 · 246 阅读 · 0 评论 -
初识函数 & 练习题
函数:function 方法一段具有某项功能的代码的集合,是C语言中管理代码的最小单位把代码封装成一个个的函数,是为了方便管理和调用代码。函数的分类:标准库函数: C语言标准委员会为C语言以函数形式提供的一些基础的功能,被封装在libc.so库中,使用时需要包含头文件,只需要 函数名(参数) 调用即可。系统函数:(不是函数) 是操作系统以函数接口形式提供的一些功能,这些功能包括: 内存管理、信号处理、文件IO、文件管理、进程管理、进程通信、线程通信、线程同步、网络通信第三方库函原创 2021-06-06 15:55:57 · 87 阅读 · 0 评论 -
二维数组和练习题
二维数组:一维数组当作是把变量排成一排,通过编号来访问二维数组相当于把变量排成一个矩阵,通过行号和列号来访问定义: 类型 数组名[行数] [l列数]; int arr[3] [5];**使用:**数组名[行下标] [列下标] 行下标:0到行数-1 列下标:0到列数-1遍历:两层for循环配合,一般外层循环负责遍历行,内层循环负责遍历列。**初始化:**类型 数组名[行数] [列数] = {{第一行},{第二行},{第三行}…}; int arr[3] [5]原创 2021-06-06 15:54:05 · 3231 阅读 · 0 评论 -
数组 及试题
数组:**什么是数组:**相同类型变量的组合,是一种批量定义变量的方式**定义:**类型 数据名[数量]; int num1,num2,num3,num4,num5; =int arr[5];使用: 数组名[下标]; arr[0] ==num1 arr[4] == num5 数组的下标从0开始,从0到n-1**遍历:**与for循环配合使用,使用循环变量作为数组下标int arr[5] = {1,2,3,4,5};for(int i=0;i<5;i++)原创 2021-06-06 15:49:46 · 114 阅读 · 0 评论 -
循环语句&开关语句&跳转语句 及其试题
开关语句switch(n) //n可以是数值、表达式,运算结果必须是整型{ case val: //val 必须是常量,如果val等于n,则打开开关 ... break; //switch不能与continue配合使用 //如果所有的case 后面都有break,就形成了多分支结构 default: //如果前面的都没有匹配成功,则打开default开关并执行,放在任何位置都有一定会执行}练习1:输入一个月份,判断季节#include &原创 2021-06-06 15:43:37 · 231 阅读 · 0 评论 -
GNU gcc编译器
编译器 负责把人能看懂的代码组成的文本文件,翻译成计算机能看懂的二进制文件,由预处理器、编译器、链接器组成。 gcc是GUN社区为了编译Linux代码而开发的一款免费的编译器,默认采用C89语法标准, -std=gnu99可以设置C99语法常用的参数: -E 显示预处理的结果 -c 只编译不链接 -o 指定输出结果的名字 -I 指定头文件的加载路径 -S 生成汇编代码 -l(小写L) 指定要使用的库文件 -Wall 尽可能多地产生警告 -Werror原创 2021-03-03 19:30:39 · 482 阅读 · 1 评论 -
第一个C程序
C语言简介: BCPL->new B->C->UNIX->Minix->Linux->gcc GNU Linux C语言诞生 1970年~1973年,在肯.汤普逊、丹尼斯.里奇(主)的主导下编写完成,归属于美国贝尔实验室。 C语言的诞生专门用于编写操作系统,所以天生适合硬件编程,也以速度快著称,也非常适合数据结构和算法 由于出现时间过早,有很多缺陷,由于没想到普通人也能使用C语言编程,因此存在着很多缺陷,但是前辈总结了一些避免陷阱的经验《C语原创 2021-03-03 19:26:21 · 137 阅读 · 1 评论 -
Ubuntu系统使用技巧 Vim基本技巧介绍
Ubuntu系统使用技巧: Ctrl+alt+t: 打开终端 Ctrl+L:清理屏幕 Tab: 自动补全 up/down: 调出命令执行记录 Ctrl+Alt+方向键:切换工作区 Alt+Tab: 切换任务重定向、管道、通配符:重定向:就是把命令的执行结果写入到文件中 cmd > filename 把命令的执行结果以清空的方式写入到文件中(先清空再写入) cmd >> filename 把命令的执行结果以追加的方式写入到文件中管道:原创 2021-03-03 19:22:13 · 245 阅读 · 1 评论 -
Linux常用指令介绍
Linux系统介绍:Linux管理键盘能力很强,所以我们看到的只有一个分区/ 根目录 所有文件都储存在里面根目录各个文件储存信息:/bin: 存储系统命令 如ls/etc 储存各种软件相关的配置文件/dev: 设备文件(一切皆文件)/media 多媒体文件,U盘,光盘,共享文件夹/proc 记录程序运行时的资源的使用情况/sbin 储存超级管理员使用的系统命令/sys 储存系统相关的文件/var 储存系统相关日志/boot 储存系统启动相关的文件/lib 储存各种库文件 静态库.原创 2020-12-07 20:21:16 · 109 阅读 · 2 评论 -
C语言数据类型及运算符
数据的储存单位: Bit 比特 一个二进制位,只能存0或者1,计算机中存储数据的最小单位 Byte 字节 八个二进制位,计算机中储存数据的基本单位 KB 1024字节 MB 1024KB GB 1024MB TB 1024GB PB 1024TB数据类型: 为什么要对数据分类: 现实生活中数据都是自带类别属性 对数据进行分类可以节约存储空间,提高运行效率 C语言中数据分为两大类:自建(程序员自己设计,例如:结构、联合、类),内建(C语言中自带) 内建:原创 2021-03-20 16:12:54 · 543 阅读 · 0 评论