
C语言
文章平均质量分 81
C语言
小丑小丑小丑
这个作者很懒,什么都没留下…
展开
-
C语言简易理解程序运行前经过的流程+预处理指令
文章目录编译和运行预处理编译汇编链接运行阶段#define的使用编译和运行我们都知道计算机是只认识二进制的,当我们写下这种文本代码时,计算机是怎么将这些文本转换成二进制让机器看的懂的。经过两个大阶段:编译和运行编译又分为了四个小阶段,分别为:预处理(预编译),编译,汇编,链接这些过程在linux上可以清晰的看到会发生什么。大概用文字描述一下:预处理在预处理阶段程序会做三件事情把程序中的注释全部删除头文件展开,比如stdio.h等等把#define进行替换编译编译阶段干的最明显原创 2021-10-09 22:08:03 · 629 阅读 · 1 评论 -
C语言文件操作
文章目录1.文件指针和文件信息区文件的打开和关闭文件的顺序读写fgetcfputcfgetsfputsfscanffprintf1.文件指针和文件信息区每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE.FILE结构体大致是这样,每个编译器都不太相同,但大同小异struct _iobuf { char *_ptr; int原创 2021-10-08 17:30:04 · 217 阅读 · 0 评论 -
C语言动态内存开辟函数使用注意事项
文章目录1.如何避免malloc出现警告2.malloc和calloc的区别3.free的错误使用方式4.realloc使用时容易犯的错误5.常见的动态内存错误1.如何避免malloc出现警告下面这段代码会报什么警告呢?int main(){ int* p = (int*)malloc(sizeof(int)); p[0] = 1; return 0;}编译器报出了空指针的警告。原因:malloc在创建空间失败的时候会返回NULL,这段代码没有处理p是空指针的情况,因此有警告。原创 2021-09-25 23:56:57 · 146 阅读 · 0 评论 -
C语言结构体位段枚举共用体
char的大小是1,vs的默认对齐数是8.因此第一个成员的对齐数是1.int的大小是4,vs的默认对齐数是8,因此第二个成员的对齐数是4.第三个成员同理,对齐数是1.原创 2021-09-23 22:35:38 · 400 阅读 · 0 评论 -
C语言字符串函数和内存操作函数
文章目录字符串函数1.strlen2.strcpy和strncpy3.strcmp和strncmp4.strcat和strncat(strcat不可以自己追加自己的原因)5.strstr6.strtok内存操作函数1.memcpy2.memmove3.memset4.memcmp字符串函数1.strlenstrlen是用来记字符串的长度的。写一下我原创 2021-09-21 15:02:55 · 465 阅读 · 3 评论 -
C语言指针水平检测题,答对大部分证明对指针就有一定的了解了!!!
文章目录1.小题2.大题注:以下分析均在32位环境下运行1.小题第一题:int a[] = {1,2,3,4};printf("%d\n",sizeof(a));printf("%d\n",sizeof(a+0));printf("%d\n",sizeof(*a));printf("%d\n",sizeof(a+1));printf("%d\n",sizeof(a[1]));printf("%d\n",sizeof(&a));printf("%d\n",sizeof(*&原创 2021-09-08 18:43:12 · 312 阅读 · 3 评论 -
基于冒泡排序实现任意类型的排序
这是最简单的冒泡排序写法,但是我们好像发现这种写法只能排序固定的类型,如果要写一个可以排任意类型的冒泡排序,我们要怎么写呢?int main(){ int arr[] = { 1,2,3,4,5 }; int sz = sizeof(arr) / sizeof(arr[0]); for (int i = 0; i < sz -1; i++) { for (int j = 0; j < sz - i - 1; j++) { if (arr[j] < arr[j +原创 2021-09-01 23:14:01 · 273 阅读 · 0 评论 -
初学者角度学qsort的用法
这是MSDN上对qsort的描述qsort可以对任意类型的序列排列。它有四个参数:需要排序的序列序列里元素的个数每个元素的大小(单位字节)比较函数void qsort( void *base, size_t num, size_t width, int (__cdecl *compare )(const void *elem1, const void *elem2 ) );前面三个都很容易理解,重点讲比较函数。比较函数是需要用户根据自己需要排列哪些类型的元素来写的。它有返回值。如原创 2021-09-01 22:53:49 · 154 阅读 · 0 评论 -
C语言函数指针
文章目录1.函数指针的定义1.1函数指针的调用1.2 辨别函数指针1.3函数指针数组2函数指针怎么用2.1回调函数2.2 转移表3.指向函数指针数组的指针1.函数指针的定义函数指针是函数开始处的地址。但你也可以理解成函数指针就是函数。通过操作符&和解引用可以说明这个想法。int f();//函数fint main(){ int(*f)() = f;//函数指针的定义和初始化 int(*f) = &f;//初始化表达式中的&操作法是可选的。 return 0;}原创 2021-08-30 13:12:03 · 857 阅读 · 0 评论 -
C语言字符指针和数组指针
文章目录1.字符指针2.数组指针3.指针数组1.字符指针2.数组指针3.指针数组原创 2021-08-30 10:13:43 · 365 阅读 · 0 评论 -
C语言数据的存储方式(整型和浮点型)
文章目录1.整型的储存形式:原码反码补码#注意事项1.1以补码存放的好处1.2大小端字节序1.2.1 如何验证这个平台是大端字节序还是小端字节序呢?1.3关于整型数据存储方式的练习题总结2.浮点数的存储方式1.整型的储存形式:原码反码补码一个整数的二进制表示方式有3种。分别是源码,反码和补码。源码是数字本身的二进制序列。例如4的源码就是0100.反码是对源码的除符号位外(序列的第一位是符号位,0表示整数,1表示负数的每一个二进制位进行按位取反。(0变成1,1变成0)补码是对反码的二进制序列+1原创 2021-08-23 12:03:05 · 2724 阅读 · 1 评论 -
c语言怎么生成特定范围的随机数(时间戳和rand()函数的使用)
文章目录0.代码与结果展示1.rand()函数介绍2.srand()与rand()搭配3.time()作为srand的参数如何使用4.怎么用rand函数生成特定范围的随机数0.代码与结果展示可以产生1-100的特定数详解看第四点。int main(){ srand((unsigned int)time(NULL)); for (int i = 0; i < 3; i++) { int x; x = rand() % 100 + 1; printf("%d\n", x);原创 2021-07-28 18:32:56 · 10992 阅读 · 0 评论 -
c语言不使用临时变量交换两个数
文章目录1.加减法和它的缺陷2.异或法和它的缺陷这些方法不要背,理解后就记住了。1.加减法和它的缺陷int main(){ int a = 3; int b = 5; //交换 a = a + b; b = a - b; a = a - b; return 0;}解释:a+b变成一个整体之后分别减去其中的部分可以实现交换的功能。第一行是变成一个整体。第二行是用这个整体减去了其中一个部分(b),等价于b = a + b - b,实际上就是把a的值赋值给了b。第三行是用原创 2021-07-29 10:15:31 · 366 阅读 · 1 评论 -
用c语言基础知识写小游戏之三子棋
文章目录0.思路简介1.准备工作1.1 简易的用户交互界面1.2 构建大体框架2.棋盘相关函数2.1 初始化棋盘2.2 画出简易棋盘2.3 玩家输入函数2.4 电脑输入函数(简易)2.5 判断游戏结果函数2.6 完善game()函数3.源代码3.1 头文件game.h3.2 源文件 game.c3.3 源文件 test.c0.思路简介源代码放在最后。大致分为分为3部分构建三子棋环境,即棋盘的样子,如何赢等等让用户可以进行输入让电脑可以输入源代码放在最后。1.准备工作创建两个源文件,一个原创 2021-07-27 19:01:58 · 488 阅读 · 0 评论 -
C语言找素数的几种方法
记录一下我知道的找素数的方法,这里就拿生成1-100的素数表作例子来展示。方法试除法试除开平方法辗转相除法更相相减法埃式筛选法试除法试除法就是把每一个数都拿它之前的所有数来除一遍,如果出现余数为0,则证明不是素数。例如:要验证99是否为素数,就拿1-98来给99除。当除到3时发现余数是0,所以99不是素数void FindPrime(){ int i = 0; int j = 0; for (i = 1; i <= 100; i++)//这原创 2021-04-14 13:32:58 · 22660 阅读 · 4 评论 -
用c语言基础知识写小游戏之扫雷
文章目录1.思路简介2.扫雷基本功能2.0初始化函数2.1埋雷函数2.2排雷函数2.3数雷函数2.4棋盘展示函数2.5特殊情况大片展开函数2.6记录游戏总时长3.源代码1.思路简介先做9×9大小的扫雷。由于扫雷规则的特殊性。容易造成数组越界。原因:在边缘位置进行九宫格数雷操作的时候,会数到数组外面去。如果不扩容会造成数组越界。以后我们要展示的时候,只展示从第一列到第9列即可。在数组里面,我们要存放的信息点有很多。这个格子是否有雷(1为有雷,0为没雷,这么设置在写代码时有便利的地方)以这个各自原创 2021-07-28 19:07:12 · 268 阅读 · 6 评论 -
2021-07-29 C语言 字符串搜索子字符 和 删除字符串里的字串 函数实现
文章目录1.编写一个函数在字符串中搜索字符(实现strpbrk函数)2.编写一个函数,删除一个字符串的一部分(重点)1.编写一个函数在字符串中搜索字符(实现strpbrk函数)要求:查找source字符串中匹配chars字符串中任何字符的第一个字符,然后返回一个指向source中第1格匹配所找到的位置的指针。如果没有找到就返回NULL不允许使用操纵字符串库函数不允许使用下标引用函数原型char* find_char(char const* source, char const* chars原创 2021-07-30 17:20:14 · 523 阅读 · 0 评论 -
《C和指针》读书笔记之操作符和表达式
文章目录1.操作符1.1 算数操作符1.2 移位操作符1.3位操作符1.3.1位的操纵 (星号)1.4 赋值操作符(星号)1.5 单目操作符1.6关系操作符1.7逻辑操作符(星号)1.8条件操作符1.9逗号操作符1.10下标引用,函数调用和结构成员2.布尔值3.左值和右值4.表达式求值4.1隐式类型转换4.2算术转换4.3 操作符的属性4.4 优先级和求值的顺序5.部分问题和练习5.1编写一个加密函数。5.2 编写一个函数逆序二进制并返回对应的十进制(重点)1.操作符1.1 算数操作符+加原创 2021-07-29 19:15:26 · 168 阅读 · 0 评论 -
快速入门c语言
文章目录1.什么是C语言1.1语言发展历史1.2 IDE和编译器2.第一个程序2.1 main函数的几种写法3.数据类型4.变量4.1 变量在内存中的体现5.常量5.1字面常量5.2const修饰的常变量5.3#define定义的标识符常量5.4枚举常量6.字符串6.1c语言怎么写字符串6.2字符串结束标志7.转义字符7.1转义字符简介7.2重点转义字符和习题8.选择语句8.1if语句8.2 switch语句9.循环语句10.函数11.数组12.操作符12.1移位操作符12.1.1 左移操作符12.1.2原创 2021-06-14 16:05:11 · 313 阅读 · 3 评论