
C语言
文章平均质量分 93
诡异森林。
学,学不完的。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言--程序环境和预处理
FILE//进行编译的源文件LINE//文件当前的行号DATE//文件被编译的日期TIME//文件被编译的时间STDC//如果编译器遵循ANSI C,其值为1,否则未定义return 0;语法:# define MAX 1000 # define reg register //为 register这个关键字,创建一个简短的名字 # define do_forever for(;;) //用更形象的符号来替换一种实现 # define CASE break;原创 2023-07-19 20:40:50 · 1372 阅读 · 11 评论 -
C语言--动态内存管理(图解)
所以,如果我们把结构体的内存以及其成员要的内存一次性分配好了,并返回给用户一个结构体指针,用户做一次free就可以把所有的内存也给释放掉。例如一个数组:int arr[100];通常情况下,数组的大小是固定的,即在声明数组时需要指定数组的大小。然而,柔性数组在声明时只需要指定已知的固定部分的大小,而不需要指定可变部分的大小。当str指向的空间被释放,虽然str指向的地址不为空,但由于没有空间大小,在不同的编译环境下就会出错;对于开辟失败的空间,那么p指向的就为空,所以我们开辟空间要养成习惯,加入条件判断;原创 2023-07-17 20:21:21 · 434 阅读 · 4 评论 -
C语言--文件操作
在我们写完一个程序之后,我们输入的一些数据只是暂时的,当我们退出程序重新进入该程序,之前输入的数据就没有了,为了能有效的保存这些数据,就引进了文件来进行存储;C语言进行文件操作的主要目的是为了数据的永久保存和数据的读取。永久保存:C语言的程序在运行时,数据是存储在内存中的,一旦程序关闭,内存中的数据就会丢失。通过文件操作,可以将数据保存在磁盘上,以实现永久保存。数据交流:文件操作可以实现不同程序之间的数据交流。一个程序可以将数据写入文件,另一个程序可以从文件中读取数据,从而实现数据的共享和传递。原创 2023-07-16 20:02:31 · 498 阅读 · 18 评论 -
自定义类型:结构体、枚举、联合体
在上面我们其实已经介绍一种结构体变量的定义方法,就是在括号后面加上定义;int x;int y;} p1;上面p1和p2都是正确的定义,且p1和p2是相同类型的;2 , 5 };定义变量同时对其初始化;int data;} n1 = {10 , {//结构体嵌套初始化 struct Node n2 = {20 , {//结构体嵌套初始化需要注意的是,当写在函数之外的为全局变量,n1这种类型必定是全局变量,而n2取决于是否放在函数内部;原创 2023-07-14 10:52:46 · 339 阅读 · 9 评论 -
字符串函数和字符函数
对字符串函数的详细讲解原创 2023-07-12 14:12:14 · 422 阅读 · 5 评论 -
指针的进阶(2)
包含sqort函数的使用说明,和函数指针数组的讲解原创 2023-07-07 17:57:27 · 232 阅读 · 5 评论 -
指针的进阶(1)
数组指针,是一个指针,指向数组的指针。//指针数组//数组指针这里要注意:[]的优先级要高于号的,所以必须加上()来保证p先和结合。原创 2023-07-07 01:31:16 · 160 阅读 · 4 评论 -
数据在内存中的存储(2)
但是,我们知道,科学计数法中的E是可以出现负数的,所以IEEE 754规定,存入内存时E的真实值必须再加上一个中间数,对于8位的E,这个中间数是127;比如,2^3的E是3,所以保存成32位浮点数时,必须保存成3+127=130,即10000010。IEEE 754规定,在计算机内部保存M时,默认这个数的第一位总是1,因此可以被舍去,只保存后面的xxxxxx部分。这时,浮点数就采用下面的规则表示,即指数E的计算值减去127(或1023),得到真实值,再将有效数字M前加上第一位的1。当S=1,V为负数。原创 2023-06-01 16:44:06 · 173 阅读 · 3 评论 -
数据在内存中的存储(1)
char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数合理的利用不同的类型,才能使内存空间的合理分配。也就是说,存在这么多的类型,其实是为了更加丰富的表达生活中的各种值。原创 2023-05-29 00:07:53 · 309 阅读 · 4 评论 -
C语言:初阶指针
在电脑中,数据一定是从内存的低地址依次向高地址读取和写入,小端存储,会将低位存储到低地址处,高地址存储到高地址处,也即存储时是0x44332211.所以,pc解引用后,由于它是char类型的,大小只有一个字节,所以只对一个字节内存大小赋值为0,即为44;在这里,地址是十六进制的;(随机的、不正确的、没有明确限制的)指针变量在定义时如果未初始化,其值是随机的,指针变量的值是别的变量的地址,意味着指针指向了一个地址是不确定的变量,此时去解引用就是去访问了一个不确定的地址,所以结果是不可知的。原创 2023-05-25 22:45:44 · 210 阅读 · 1 评论 -
力扣:删除有序数组中的重复项
我们的其它思路保持不变,这时我们对nums[]创建两个指针,初始化都为1,一个为fast,一个为slow,fast表示访问的下标,对应上面的i,slow表示返回的长度,对应上面的cur+1(也是sum),也表示新数组下一个元素该填的位置;所以,我们是将nums[slow-2]与nums[fast]进行比较,对于slow-1位置上的元素,在这个例子中,可能性只有是1或者2,如果是1,表明新数组已有两个相同元素,slow位置存的是不相同的;,因为实际上就是新数组最后一个元素与当前访问数组不同时,就改变新数组。原创 2023-05-22 13:06:15 · 331 阅读 · 2 评论 -
C语言:数组(详解)
数组(Array)是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。这些有序排列的同类数据元素的集合称为数组。所以,数组是用于储存多个相同类型数据的集合。原创 2023-05-19 19:47:37 · 9390 阅读 · 4 评论 -
C语言:扫雷小游戏(空白展开和标记雷点)
相信大多数人都玩过扫雷游戏–微软自带扫雷游戏。在一个9×9(初级)、16×16(中级)、16×30(高级)或自定义大小的方块矩阵中随机布置一定量的地雷(初级为10个,中级为40个,高级为99个),再由玩家逐个翻开方块,以找出所有地雷为最终游戏目标。玩家根据数字(数字代表周围8个格子有多少个雷)来依次排除雷;当点击到空白位置时,区域就会自动展开;你知道雷位置之后,也可以标记这个雷;当然,老玩家都知道,如果标记正确的话,点击已经开过的位置时,它还会自动展开。标记雷和空白展开,当然扫雷的基本特性也会实现。原创 2023-05-12 00:27:28 · 575 阅读 · 3 评论 -
printf()和scanf() (详解)
在C语言中,printf和scanf函数是贯穿始终的,它们是输出和输入函数,简称。它们的工作原理几乎相同,两个函数都使用格式字符串和参数列表。我们先介绍printf(),再介绍scanf()。原创 2023-05-03 16:53:28 · 7110 阅读 · 3 评论 -
C语言:递归(新手入门)
在C语言中,函数是允许调用自己的,这种调用过程称之为递归。而递归,顾名思义就是在传递函数的调用和归还函数的结果。递归有大事化小的能力,写起代码来很容易,而理解起来却很抽象。由图片知道,递归是需要条件来结束递归的,否则将会无限递归下去。一般来说,可以使用循环的地方通常都可以使用递归。在这里,就简单介绍了递归的使用方法和一些注意事项,由上面例子清楚,我们的终止条件一般都会放在前头,然后才是递归关系式。如果你想巩固递归思想,可以通过专项练习进行巩固。原创 2023-04-28 01:35:45 · 340 阅读 · 3 评论