C语言
文章平均质量分 91
认识C语言及其基本使用
叶落闲庭
驾驭命运的舵是奋斗。不抱有幻想,不放弃一点机会,不停止一日努力。
展开
-
【C语言】自定义类型 -- -- 结构体、位段、枚举、联合体
🐎🐎🐎🐎我们在完成一些多个信息的记录的时候往往需要定义多个变量,这样在使用这些变量的时候会显得很笨重,有没有一种类型可以包含多种类型,通过这一种类型可以使用包含多个类型的某一个变量呢,答案是有,我们接下来要介绍的结构体类型就可以完成这样的操作,同时还有其他的一些自定义类型会随着我们对代码的深入了解逐渐的发现它们的妙用,本文会通过下面的导图由浅入深的了解自定义类型。结构体类型声明后,我们该如何定义结构体变量呢,通过下面的代码结合注释可以清晰地理解在不同位置创建变量后的不同效果。原创 2023-01-13 21:26:47 · 186 阅读 · 8 评论 -
【C语言】函数----函数的分类、库函数详解(strcpy、memset)、自定义函数的实现(找较大值、交换两个数)
1.在计算机科学中,子程序(英语:Subroutine, procedure, function, routine, method,subprogram, callable unit),是一个大型程序中的某部分代码, 由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代 码,具备相对的独立性。2.一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软件库。原创 2022-12-17 18:32:14 · 1275 阅读 · 3 评论 -
认识C语言
简单地说,计算机编程语言就是,就比如我们平时交流使用的汉语、英语、日语,人与人交流可以有各种 语言,而计算机语言就是作为人与计算机交流的语言,像C语言、C++、Java、Python、go语言等等,都是计算机语言。人通过写代码的方式与计算机进行沟通,到目前已经有1千多种计算机语言了,而C语言只是其中的一种而已。那我们回过头来再说到底什么是C语言呢,C语言是一门,广泛应用于底层开发。原创 2022-12-10 13:25:56 · 235 阅读 · 0 评论 -
【C语言】函数 ---- 函数的嵌套调用和链式访问、函数的声明和定义、变量的声明和定义、函数递归与迭代、递归时的栈溢出问题
程序调用自身的编程技巧称为递归,递归就是自己调用自己,作为一种算法在程序设计语言中广泛应用,通常把一个大型复杂的问题转换成一个与原问题相似的规模较小的问题来求解,只需少量的程序就可描述出解题过程的多次计算,减少了程序的代码量,递归就是把大事化小。递归:递:递推归:回归\n");main();return 0;}可以看到,这是在main函数内又调用了main函数,而调用的main函数内又有main函数,如此重复调用下去,就成了一个递归函数,它会死循环的打印hello!原创 2022-12-20 14:29:52 · 935 阅读 · 5 评论 -
【C语言】数据的存储(基本类型介绍、原码、反码、补码详解、大小端的理解、浮点数的存储规则)
大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中为什么会有大小端之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8 bit。原创 2023-01-04 19:42:08 · 748 阅读 · 7 评论 -
【C语言】分支和循环 ---- if、switch、while、for、goto语句, 理解getchar和putchar函数
getcahr()一次读取一个字符,键盘输入一个字符A然后回车,此时输入缓冲区内存放的是A\n,getchar()读取的是A,返回A的ASSIC码值给到ch,A的ASSIC码值为65,所以ch就是65,不等于EOF(也就是-1),while条件成立,执行putchar(ch)输出A,然后继续读取输入缓冲区内剩余的空格(\n),再给到ch,由putchar(ch)输出,这时输入A,就会有输出A并带有换行的效果,(ch = getchar())!值得注意的是,getchar()的返回值是得到的字符的。原创 2022-12-12 19:19:36 · 706 阅读 · 4 评论 -
【C语言】动态内存管理 -- -- 深入了解malloc、calloc、realloc、free、柔性数组(万字深入了解)
对于内存开辟的方式,我们目前可以通过变量和数组来开辟空间,但在使用这两种方式进行空间开辟的话,有两个特点,一是空间开辟大小固定,二是数组在声明的时候,必须指定数组的长度,他所需要的内存在编译时分配,我们在使用时,不能保证我们对空间的利用正好是我们想要的大小,可能会导致空间不够或是空间浪费,而动态内存分配可以很好的解决这一问题。原创 2023-01-21 17:34:29 · 159 阅读 · 2 评论 -
C语言变量声明内存分配(转载)
堆则是C/C++函数库提供的,它的机制是很复杂的,例如为了分配一块内存,库函数会按照一定的算法(具体的算法可以参考数据结构/操作系统) 在堆内存中搜索可用的足够大小的空间,如果没有足够大小的空间(可能是由于内存碎片太多),就有可能调用系统功能去增加程序数据段的内存空间,这样就有机 会分 到足够大小的内存,然后进行返回。栈:在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。转载 2023-01-21 17:53:53 · 823 阅读 · 2 评论 -
深入了解字符(串)函数 -- -- 字符(串)函数的实现(strlen、strcpy、strcmp、strcat、strstr、)内存函数的实现(memcpy、memmove)
C语言不像其它编程语言有专门的字符串类型,像Java语言就有专门对应字符串的引用类型String类型,C语言的字符串一般是存在于字符数组或由字符指针表示,字符串是指一串0个或多个字符,并且以一个位模式为全0的NULL字节结尾,因为NUL为非0打印字符,并且NUL的ASSIC码值为0,所以选它为终止符,字符串的这个特性非常重要,字符串的长度指的是NUL之前字符的长度,不包括NUL。1.计算字符串长度,不包含\02.参数为char*的字符指针,返回size_t的无符号整型。原创 2023-01-11 22:16:05 · 408 阅读 · 4 评论 -
深入了解指针和数组
首先&arr[0]得到的是arr[0]的地址,就是第一个元素的地址,+1跳过一个元素的大小,指向了第二个元素的地址,sizeof(&arr[0]+1)计算的是第二个元素的地址的大小,为4/8个字节。arr进行&操作得到的是整个数组的地址,strlen接收的是整个数组的地址,也是从首元素’a’开始,往后找’\0’,数组内没有’\0’,会继续往后越界找’\0’,返回的是随机值。原创 2023-01-09 19:26:03 · 116 阅读 · 5 评论 -
循环的应用--猜数字游戏、关机程序【c语言篇】
1.程序会生成一个1~100的随机数2.猜数字(猜错会有提示)3.支持反复玩程序执行起来就倒计时(60s)关机如果输入:dad,就取消关机。原创 2022-12-16 19:11:59 · 492 阅读 · 2 评论 -
【C语言】分支和循环的应用(二分查找、字符移动、模拟登录界面)
在一个中查找某个具体的数n其实要实现这个功能可以有很多种方法,但用二分查找法是一种比较优的方法。一般的思想就是,然后拿要找的数字跟数组中的每一个数字进行比较,找到后返回该数字的下标。这种方法的弊端在于当数组内的个数是N个,如果要查找的数刚好是最后一个,就需要遍历整个数组,查找的速度会更慢,查找的效率更低。原创 2022-12-13 19:17:35 · 166 阅读 · 2 评论