C学习
文章平均质量分 78
Skyline-sjc
这个作者很懒,什么都没留下…
展开
-
编译+链接+预处理指令
编译+链接+预处理指令编译+链接C语言执行的过程编译预编译编译汇编链接预处理指令预处理符号宏定义宏定义函数与函数一些特殊的预处理指令编译+链接C语言执行的过程我们知道机器最终实现的为01序列的二进制代码,而我们在VS等IDE下编写的其实是一串串的文字。首先编译器会将我们写的代码全部转化为字符(利用ASCⅡ码)存储,根据不同的指令再通过编译转化为汇编语言,此时高级语言已经达到了机器语言的层面,汇编语言再次转化为二进制语言,生成了obj文件(xxx.o),送入链接器,生成可执行文件(xxx.exe)编原创 2021-03-20 11:42:25 · 1052 阅读 · 6 评论 -
通讯录优化+文件操作
通讯录优化+文件操作通讯录优化文件操作文件的打开和关闭(fopen、fclose函数)fopen函数fclose函数文件读写函数fgetc和fputcfgets和fputs(文件指针会根据行移动)fgets函数fputs函数fscanf和fprintffread和fwritesscanf和sprintf函数fseek函数ftell函数rewind函数feof、ferror函数文件缓冲区概念通讯录优化相比于上一篇博客的静态通讯录,此版本通讯录增加了动态开辟空间及将通讯录储存进入文本的功能。即a. 添加原创 2021-03-14 20:26:00 · 1716 阅读 · 0 评论 -
动态通讯录+动态内存管理
通讯录+动态通讯录+动态内存管理动态通讯录动态内存管理开辟位置malloc函数函数使用方法判断是否申请成功free函数函数使用不释放空间的问题calloc函数函数使用realloc函数函数使用注意点动态内存开辟的错误动态通讯录#include <stdio.h>#include <string.h>#include <malloc.h>#define NAME_MAX 20#define SEX_MAX 5#define TELE_MAX 12#defin原创 2021-03-11 10:43:44 · 1037 阅读 · 2 评论 -
结构体+枚举+联合体
结构体+枚举+联合体结构体结构体的声明结构体的嵌套+链表结构体变量的初始化结构体的内存对齐一、首先得掌握结构体的对齐规则二、一些具体的例子为什么存在内存对齐?位段位段的内存保存枚举枚举的优点联合体联合体内的空间使用联合体大小的计算结构体结构体的声明struct Stu{ char name[20];//名字 int age;//年龄 char sex[5];//性别 char id[20];//学号};//分号不能丢需要注意的是结构体可以使用匿名声明,但这种声明只能只能使用一次,相当于原创 2021-03-07 15:48:52 · 2161 阅读 · 6 评论 -
C语言字符函数、内存函数 功能及实现
C语言字符函数、内存函数 功能及实现strlen函数(求字符串长度)注意点模拟实现strcpy函数(字符串拷贝函数)注意点模拟实现strcat函数(字符串衔接函数)注意点模拟实现strcmp函数注意点模拟实现strstr函数模拟实现strtok函数使用strerror函数使用memcpy函数注意点模拟实现memmove函数注意点模拟实现memset函数注意点strlen函数(求字符串长度)统计字符串长度直到\0为止注意点1、属于<string.h>库2、参数为字符串,返回类型为无符号整原创 2021-02-05 21:05:09 · 3749 阅读 · 3 评论 -
C语言 qsort函数及其实现
qsort 函数实现认识qsort函数关于cmp函数实现qsort函数(此处采取冒泡排序,后续补充快速排序)认识qsort函数首先调用时先引头文件#include<stdlib.h>base是数组首元素,num是数组长度,width是数组中一个元素占字节的大小,compare是一个比较函数,来确定比较的方式,若大于则返回正数,小于返回负数,相等返回0关于cmp函数由于根据声明发现此处的e1,e2参数都是void*类型的指针,而此种类型的指针是不能解引用和++/–的,所以我们在比较时原创 2021-02-02 21:52:14 · 2708 阅读 · 3 评论 -
C语言数据存储-浮点型
C语言数据存储-浮点型浮点型浮点型的种类和表示范围储存方式二进制转化浮点型浮点型的种类和表示范围1、float:3.4E-38~3.4E382、double:1.7E-308~1.7E3083、long double:3.4E-4932~1.1E4932储存方式二进制转化我们以9.5为例,首先将一个浮点型数据转化为2进制形式,同时分为整数部分和小数部分于是就有了1001.1整数部分的转化与整型非常类似,然而小数部分非常有趣。小数点后其实类比于十进制,第一位代表2^-1(即0.5)第二原创 2021-02-01 20:15:40 · 2177 阅读 · 4 评论 -
C语言数据存储--整型
C语言数据存储--整型整型数据:整型家族原码、反码、补码减法计算计算机的大小端何为大小端?如何判断计算机是大端还是小端?一些操作实例整型数据:整型家族charunsigned charsigned charshortunsigned shortsigned shortintunsigned intsigned intlongunsigned longsigned long原码、反码、补码1、正整数原码、反码、补码相同,直接进行二进制转换就可;(2^32-1个正整数)2、负整原创 2021-01-31 22:11:35 · 341 阅读 · 1 评论 -
C语言 位运算操作符及应用(骚操作)
C语言长盛不衰霸榜长久的一部分原因,在于它对于计算机底层的操作。位运算,作为实现底层操作的一部分功能值得我们关注。当然从功利的角度而言,位运算在以后的面试、笔试过程中对我们有着极大的便利。前言:首先需要了解整数储存的机制;原码、反码、补码;三种码都是32位的二进制数输出靠原码,内存存补码;1、正整数原码、反码、补码相同,直接进行二进制转换就可;(2^32-1个正整数)2、负整数32位的首位为符号位(1代表负数);(2^31-1个符数)原码将剩余的31位通过负整数的绝对值进行二进制转化反码原创 2021-01-29 21:17:14 · 1637 阅读 · 4 评论 -
c语言 扫雷游戏模拟实现
扫雷是Windows系统的经典游戏,下文将利用c语言实现这个经典的小游戏。本版本程序添加了炸弹标记功能。但由于作者水平实现较为死板,此处留坑待以后学习后改进。Part 1主函数部分:此部分主要提供用户界面,不同程序均可利用:int main(){ srand((unsigned int)time(NULL)); int input = 0; do { menu(); printf("请选择:>\n"); scanf原创 2021-01-25 20:30:25 · 3040 阅读 · 9 评论 -
C语言三子棋游戏实现及AI设想、五子棋推广
@Part1:Part 1 三子棋游戏基础实现:1、操作界面实现:即实现供用户选择的的菜单:我们定义为menu函数void menu(){ printf("****************\n"); printf("*****1.play*****\n"); printf("*****0.exit*****\n"); printf("****************\n");}我们希望达到的目的是用户可以不断选择,直至按0退出游戏,于是我们在主函数中需要搭建框架原创 2021-01-24 21:22:50 · 4680 阅读 · 10 评论 -
递归的一些问题实现及尾递归思考
Part 1 什么是递归:我们知道循环(iteration)和递归(recursion)可以理解为孪生兄弟,递归是函数抽象表达的一种。递归的优点显而易见,它在某些条件下,比循环代码量更少。递归简单来说,就是在运行过程中调用自己。而递归的实现需要满足两个条件,存在限制条件,在函数体同时在递归过程中不断逼近限制条件。(此阶段暂不考虑栈溢出)Part 2 一些递归的问题(任何理论逃不开实例):(1)汉诺塔问题:首先我们要知道什么是汉诺塔问题:这源于一个印度的传说,作者为避免文字误会,直接引用:“大梵天创原创 2021-01-22 22:10:49 · 1656 阅读 · 2 评论