C语言那些小事
文章平均质量分 60
里面为在下精简下来的C语言知识,希望可以帮助到同志!
桃乃木同学
萌新如我,敢于直面大佬的开源代码!
展开
-
【C语言】(个人)总结100条C语言小知识,千字长文,收藏必备
开门见山的说:先说好啊要是有三个不知道就点个赞吧五个不知道就收藏吧二十个不知道就点关注吧qaq球球了1仅仅有操作符的优先级和结合性,是无法确定一个复杂表达式的值的。2sizeof返回的是sizeof_t无符号整形3当int和一个无符号int比较时会发生算数转化,负数会被转换为无符号整形4改变变量的类型,并不会改变变量的值5判断一个数是不是2的m次幂,仅需n=n&(n-1),是不是为0既可以6全局指针/变量,不初始化就默认原创 2022-05-19 01:21:05 · 360 阅读 · 0 评论 -
【C语言】#difine,宏定义 ,宏和函数的区别,#,##(实例分析)
开门见山的说:目录开门见山的说:#difine定义标识符宏的定义宏和函数的区别我将从四个方面进行分析符号#符号###difine定义标识符#difine可以定义标识符可以是整形可以是字符串可以是表达式可以是代码语句#include<stdio.h>#define Int 100//整形#define Char "结果等于"//字符串#define Expression(x,y) ((x)*(y))/..原创 2022-05-12 02:13:47 · 1810 阅读 · 1 评论 -
【C语言】关于预处理符号__FILE__ __LINE__ __DATE__ __TIME__ __STDC__(实例分析)
开门见山的说 //__FILE__ //进行编译的源文件 // __LINE__ //文件当前的行号 // __DATE__ //文件被编译的日期 // __TIME__ //文件被编译的时间 // __STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义#include<stdio.h>int main(){ //__FILE__ //进行编译的源文...原创 2022-05-12 01:15:32 · 242 阅读 · 0 评论 -
【C语言】文件流,关于文件操作2,(实例分析)
开门见山的说:文件流:流:是程序沟通外部设备的方法,每个外部设备都不一样,则有独特的流与设备进行沟通。文件使用时,c程序便会打开文件流。且当c程序运行起来时会默认打开:标准输入流 stdin标准输出流 stdout标准错误流stderr文件流和平常的函数有点不同比如fgets是从文件中获取字符fputs字符输入到文件中去对比puts字符输入到屏幕中去gets是从屏幕中获取字符字符输入函数 f...原创 2022-04-29 00:12:48 · 1448 阅读 · 0 评论 -
【C语言】malloc,free,calloc,realloc动态内存管理(实例分析)
开门见山的说:函数使用时需要使用头文件#include <stdlib.h>#include<stdio.h>这些函数都是对内存进行管理的函数,与平常声明变量的固定类型不同,是可以自己操控的。malloc函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针。 如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。 返回值的类型是 void* ,所以malloc函数.原创 2022-04-28 23:05:33 · 192 阅读 · 0 评论 -
【C语言】位段(实例分析)
开门见山的说:位段位段的声明和结构是类似的,目前依靠结构体进行声明但有两个不同: 1.位段的成员必须是 int、unsigned int 或signed int 。 2.位段的成员名后边有一个冒号和一个数字。位段声明struct hu{ int a:12; int b:10; int c:10;};struct hu h;当我们用sizeof计算时会发现值为4,因为12bit+10bit+10bit为32bit=4个字节...原创 2022-04-28 21:21:46 · 796 阅读 · 0 评论 -
【C语言】关于 联合体(共用体)(实例分析)
开门见山的说:目录联合体(共用体)定义一个联合体计算联合体内存大小联合体(共用体)联合也是一种特殊的自定义类型 这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间(所以联合也叫共用体)定义一个联合体含有char型变量k和int型变量y。联合体变量h。union hu{ char k; int y;};union hu h;计算联合体内存大小#include<stdio.h>union原创 2022-04-28 21:00:15 · 487 阅读 · 0 评论 -
【C语言】关于枚举类型(实例分析)
开门见山的说枚举顾名思义就是一一列举。 把可能的取值一一列举。比如从1号到30号就是一一列举。定义枚举类型enum Day//星期{ Mon, Tues, Wed, Thur, Fri, Sat, Sun};这些中间的字符都具有值,默认从0开始,一次递增1,当然在定义的时候也可以赋初值。枚举的优点1. 增加代码的可读性和可维护性 2. 和#define定义的标识符比较枚举有类型检查,更加严谨。 3. 防止了命名污染(...原创 2022-04-28 03:44:19 · 688 阅读 · 0 评论 -
【C语言】结构体内存对齐问题(实例分析)
开门见山的说当我们用sizeof去算结构体变量是s1的值时发现s1所占的空间并不是char型一个字节+int型4个字节 struct stu { char name; int age; }s1; #include<stdio.h> int main() { printf("%d", sizeof(s1)); }这种情况的原因是结构体体存在内存对齐首先得掌握结构体的对齐规则: 1. 第一..原创 2022-04-28 03:33:00 · 766 阅读 · 0 评论 -
【C语言】初步了解结构体(实例分析)
开门见山的说:结构体是一些值的集合。这些值称为成员变量。结构体每个成员可以是不同类型。结构体声明比如声明一个学生变量struct stu { char name[20];//名字 int age;//年龄 char sex[5];//性别 char id[20];//学号 };定义结构体变量--s3struct stu s3;可以在声明时同时定义变量 struct stu { char name[20];/.原创 2022-04-27 19:24:21 · 830 阅读 · 0 评论 -
【C语言】strncpy,strncat,strncmp字符串函数---长度受限制的字符串函数。(实例分析)
开门见山的说:字符串函数分为长度受限制的字符串函数长度不受限制的字符串函数正常使用 字符串函数需要调用库函数 #include<string.h>今天我们,来了解一下长度受限制的字符串函数strncpystrncpy多了一个需要拷贝几个字符的参数,更加灵活。参数不能过大,不能超过接受字符数组参数比字符串2大会用\0补充#include<string.h>int main(){ char arr1[20] = { "abcd" }原创 2022-04-27 18:51:10 · 565 阅读 · 0 评论 -
【C语言】关于文件操作1(实例分析)
开门见山的说:目录文件与平时的内存不一样文件分类文件名而C语言操作文件时,使用的是文件操作指针 FILE类型文件的打开和关闭文件的操作字符打开并关闭一个文件文件与平时的内存不一样我们想把信息记录下来,只有我们自己选择删除数据的时候,数据才不复存在。这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。使用文件我们可以将数据直接存放在电脑的硬盘上,这样就做到了数据的持久化。文件分类文件又...原创 2022-04-26 16:12:09 · 284 阅读 · 0 评论 -
【C语言】字符比较函数----strcmp函数的模拟实现(实例分析)
开门见山的说:正常使用 strcmp函数需要调用库函数 #include<string.h>strcmp函数的参数:int strcmp ( const char *字符串1, const char *字符串2);strcmp函数的作用:就是比较字符串1,和字符串2的大小,一个一个字符的逐个比对ascii码返回值为int标准规定:第一个字符串大于第二个字符串,则返回大于0的数字第一个字符串等于第二个字符串,则返回0第一个字符串小于第二个字...原创 2022-04-26 00:03:56 · 1124 阅读 · 0 评论 -
【C语言】字符追加函数----strcat函数的模拟实现(实例分析)
开门见山的说:正常使用 strcpy函数需要调用库函数#include<string.h>strcpy函数的参数:char * strcat ( char *字符串1 const char *字符串2 );strcpy函数的作用就是将字符串2的字符,追加到字符串1后面。要注意的是1.strcat在使用中两个参数必须都含有\02.前者空间需要足够大上码#include<assert.h>#include<stdi...原创 2022-04-25 23:51:49 · 548 阅读 · 0 评论 -
【C语言】strcpy函数----字符拷贝函数的模拟实现(实例分析)
开门见山的说:正常使用 strcpy函数需要调用库函数 #include<string.h>strcpy函数的参数:char* strcpy(char *字符串1, const char *字符串2)strcpy的功能就是将字符串2的字符拷贝到字符串1中。字符串1要足够大函数功能就一个拷贝作用#include<assert.h>#include<stdio.h>//返回类型为char*,方便实现链式访问。char...原创 2022-04-25 23:45:58 · 787 阅读 · 0 评论 -
【C语言】strstr函数---判断是否为子串函数的模拟实现(实例分析)
开门见山的说:strstr函数需要调用库函数 #include<string.h>strstr函数的形参变量char * strstr ( const char *str1, const char * str2)这个函数的作用就是在str1中判断str2是不是str1的子串这个函数的返回值是char*如果是的那么该函数返回从子串开始的地址koss与ss返回第一个s开始的地址。如果不是的那么该函数返回空指针模拟实现逻辑...原创 2022-04-25 23:36:10 · 900 阅读 · 0 评论 -
【C语言】从零开始写出通讯录。
开门见山的说:目录创建菜单通过switch实现菜单,并使用do-while循环。定义通讯录变量使用枚举类型代表功能按键初始化通讯录通讯录增加联系人: 为了实现查找和删除功能,我们要创建一个查找函数删除联系人查找联系人,并打印:修改联系人确定通讯录的功能//通讯录增加联系人--------1//删除联系人 --------2//查找联系人,并打印-----3//修改联系人 ...原创 2022-04-24 19:06:26 · 19076 阅读 · 0 评论 -
【C语言】判断字符串是否为旋转后的字符串(实例分析)
直接看代码↓上码:开门见山的说:abcde a1cdeab a2想判断a2是否为a1的旋转字符串只需在a2后面再自加一段a2cdeabcdeab那么我们总能判断出a1,是否为自加后的字符串的子串很明显在判断之前要比较两个字符串的长度,如果连长度都不相等,那肯定不是旋转后的字符串 int le = strlen(a2); int lp = strlen(a1); ...原创 2022-04-24 00:21:22 · 428 阅读 · 2 评论 -
【C语言】qsort函数模拟实现(实例分析)
开门见山的说:qsort作为一个比较万能的排序函数,排序类型多的一批。qsort作为一个比较万能的排序函数,使用缺陷就是需要自定义一个比较函数关于qsort函数使用在这篇文章有详细解析qsort函数的使用https://blog.csdn.net/tq411810317/article/details/124227607?spm=1001.2014.3001.5501我们直接来说这个函数的参数,总共有四个qsort(需要排序数据的起始位置(指针类型),需要排序的元素个数,一个元素.原创 2022-04-24 00:08:25 · 280 阅读 · 0 评论 -
【C语言】qsort函数使用(实例分析)
开门见山的说:qsort作为一个比较万能的排序函数,排序类型多的一批。qsort作为一个比较万能的排序函数,使用缺陷就是需要自定义一个比较函数使用qsort函数需要使用头文件头文件-> #include<stdlib.h>我们直接来说这个函数的参数,总共有四个qsort( 需要排序数据的起始位置(指针类型),需要排序的元素个数,一个元素的字节大小,‘比较函数’)这个‘比较函数’ 是因为qsort函数在使用时需要调用一个自定义的比较函数函原创 2022-04-17 12:42:53 · 1224 阅读 · 0 评论 -
【C语言】浮点数在内存中的存储。为什么浮点数有误差?(实例分析)
根据国际标准IEEE(电气和电子工程协会) 754,任意一个二进制浮点数X可以表示成下面的形式:(-1)^S * M * 2^E(-1)^s表示符号位,当s=0,V为正数;当s=1,V为负数。M表示有效数字,大于等于1,小于2。2^E表示指数位原创 2022-04-14 23:33:44 · 1353 阅读 · 2 评论 -
【C语言】数据存储中大小端介绍,判断大小端(实例分析)
大端小端是一种数据存储模式,我们都知道地址吧,内存中地址由低到高递增大端(存储)模式,是指数据的低位,保存在内存的高地址中,而数据的高位,保存在内存的低地址中。小端(存储)模式,是指数据的低位,保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。原创 2022-04-14 00:45:03 · 4035 阅读 · 6 评论 -
【C语言】字符串逆序,字符串中单词逆序问题,模拟strlen函数
开门见山的说:目录字符串逆序问题:逆置单词问题:字符串逆序问题:#include<stdio.h>int my_strlen(char* brr)//模拟实现strlen{ static int c = 0; if (*brr != '\0') { my_strlen(brr + 1); c++; } return c;}void exchange(char* ar, int left,int right)//交换字符{.原创 2022-04-02 22:23:52 · 1116 阅读 · 0 评论 -
【C语言】一篇文章初步了解指针(实例分析)
如同数据变量——char int double等等类型一样指针变量也有自己的类型。如果是char的指针就是char*,int为int*,double为double*。char* 类型的指针是为了存放 char 类型变量的地址。int* 类型的指针是为了存放 int 类型变量的地址。double* 类型的指针是为了存放double类型变量的地址原创 2022-03-30 13:20:42 · 1120 阅读 · 0 评论 -
【C语言】&|^整数按位与/或/异或操作符——二进制详解(实例分析)
开门见山的说:整数的二进制表示形式有原码,反码,补码这三种形式,而整数存储在内存中是存储的补码形式。而且& | ^操作符也是通过操作补码实现的。目录整数二进制表现形式&操作符,按位与操作符|操作符,按位或操作符^操作符,按位异或操...原创 2022-03-28 21:19:30 · 1957 阅读 · 0 评论 -
【C语言】数组名地址与数组首元素地址区别(实例分析)
//数组名只在2重情况下被视为整个数组//第一个是sizeof计算时,第二个是作为整个数组被取用时//其他时候仅仅表示数组首元素地址开门见山的说:...原创 2022-02-15 02:20:39 · 863 阅读 · 8 评论 -
【C语言】关于数组的一些小问题
变长数组不能初始化,数组初始化值问题,整形指针与字符指针的字节差别,数组常见跃界问题,二维数组初始化问题原创 2022-02-14 01:08:03 · 1275 阅读 · 0 评论 -
【C语言】简单说说栈区,堆区,静态区
作者目前就读于,双非本科,大一,很多地方理解不当还望各位大佬耐心教导。万分感谢!本文为C语言的小事系列,喜欢的同志可以订阅本专栏点→这里这里,都是在下学习时总结的精华,希望对您有所帮助。开门见山的说:我们平时创建的变量是放在电脑的各个区域中的,如下、栈区类型:局部变量,形式参数等。特点:变量用完就释放,不用时也并不会占据空间。堆区类型:malloc、calloc、free、realloc等类型函数 。特点:动态分配的变量 。静态区类型:st...原创 2022-02-14 00:20:53 · 604 阅读 · 0 评论 -
【C语言】创建静态库了,如何调用静态库,引用静态库.(实例分析)
作者目前就读于,双非本科,大一,很多地方理解不当还望各位大佬耐心教导。万分感谢!本文为C语言的小事系列,喜欢的同志可以订阅本专栏点→这里这里,都是在下学习时总结的精华,希望对您有所帮助。开门见山的说:书接上回---如何创建静态库此时我们拿到了静态库和头文件了,将他放到我们代码的文件夹中并在前面打上这句话#pragma comment(lib,"文件名.lib")由于我这个设计的是一个减法模块最后运行结果哈,谢谢各位同志的阅读,然后...原创 2022-02-08 19:44:12 · 3089 阅读 · 2 评论 -
【C语言】一篇文章看透,函数剥离到头文件中引用.(实例分析)
作者目前就读于,双非本科,大一,很多地方理解不当还望各位大佬耐心教导。万分感谢!本文为C语言的小事系列,喜欢的同志可以订阅本专栏点→这里都是在下学习时总结的精华,希望对您有所帮助。开门见山的说:直接来吧!一般在工程里面写代码都是将自己写的函数模块剥离出来放到其他文件中,然后引用。下面这种写法不过是我们萌新练习的手法呐。#include<stdio.h>//函数声明int add(int x, int y);int main(){ int a...原创 2022-02-08 14:19:45 · 732 阅读 · 0 评论 -
【C语言】如何把代码卖给别人,却不会泄露源代码,将代码编译成静态库,创建静态库.(实例分析)
或许有一天当我们达到很牛b的程度的时候,有人购买自己写的代码,但是却会面临着源码泄露,和二次篡改的风险,那如何又能把代码的功能卖给别人,而别人却又看不到你的源代码,无法了解你的语法逻辑呢?开门见山的说:就是将你写的代码文件编译成为二进制的静态库。这个静态库全部为0101的形式,没...原创 2022-02-08 19:25:00 · 6462 阅读 · 1 评论 -
【C语言】干倒函数递归.(抽象+实例分析)
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用(考试也广泛....)。一个过程或函数在其定义或说明中有直接或间接 调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个重复规模较小的问题来求解。————————————————原创 2022-02-06 20:37:45 · 129 阅读 · 0 评论 -
【C语言】关于函数嵌套调用,链式访问.(实例分析)
函数和函数之间可以根据实际的需求进行组合的,也就是互相调用的。那么函数嵌套调用就是,在一个a函数里调用b函数,类似于夹心面包一样。注意函数可以嵌套调用,但是不能嵌套定义原创 2022-02-06 19:32:06 · 829 阅读 · 1 评论 -
【C语言】关于函数调用中的传址与传值(实例分析)
作者目前就读于,双非本科,大一,很多地方理解不当还望各位大佬耐心教导。万分感谢!本文为C语言的小事系列,喜欢的同志可以订阅本专栏点→这里 ,都是在下学习时总结的精华,希望对您有所帮助。开门见山的说:传值调用:首先,函数的传值调用仅仅将实际参数的值拷贝给形式参数函数的其次,形参和实参分别占有不同内存块,对形参的修改不会影响实参。···就是实际参数传到函数里了,不可以通过形式参数修改实际参数(函数的形参与实参在我的上一篇文章有详细说明)传址调用:首先,传址调.原创 2022-02-06 17:13:09 · 1996 阅读 · 1 评论 -
【C语言】一篇文章让你了解函数基本概念,函数定义。(实例分析)
作者目前就读于,双非本科,大一,很多地方理解不当还望各位大佬耐心教导。万分感谢!目录简单说明函数是什么函数的定义,声明简单说明函数是什么开门见山的说,函数由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。也就是说它就是个工具人罢了。然而函数基本上又分为库函数和自定义函数前者库函数就是前辈们已经写好了的函数,并明确了使用方法和使用条件的,为了方便我们的学习和工作,在下载编译器的时候都是自带的。但是使用这些库函数时必须原创 2022-01-26 13:48:52 · 809 阅读 · 0 评论 -
【C语言】关于函数中形参与实参(实例分析)
作者目前就读于,双非本科,大一,很多地方理解不当还望各位大佬耐心教导。万分感谢! 现在也是大年初六,在这给大家们拜一个早年,新年快乐!开门见山的说:实际参数(实参): 1.真实传给函数的参数,叫实参。 2.实参可以是:常量、变量、表达式、函数等。 3.无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便...原创 2022-02-06 16:09:29 · 7951 阅读 · 6 评论