自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 【C语言】入门知识

C语言把.c 为后缀的⽂件称为源文件,把.h 为后缀的⽂件称为头文件。C语言中有⼀批保留的名字的符号,比如:intifreturn,这些符号被称为保留字或者关键字。① 关键字都有特殊的意义,是保留给C语⾔使⽤的。② 程序员⾃⼰在创建标识符的时候是不能和关键字重复的。③ 关键字也是不能⾃⼰创建的。注:在C99标准中加⼊了 inline 、 restrict 、 _Bool 、 _Complex 、 _Imaginary 等关键字。⼀些关键字⼤家可以去了解⼀下,不过使⽤最多的还是上⾯的32个关键字。

2024-04-20 09:22:11 914 1

原创 C++从入门到精通——类和对象(下篇)

定义时不添加static关键字。3. 类静态成员即可用类名::静态成员或者对象.静态成员来访问。4.

2024-04-13 17:18:02 1268

原创 C++从入门到精通——类和对象(中篇)

默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝我们叫做浅拷贝,或者值拷贝。

2024-04-11 21:06:47 1328

原创 C++从入门到精通——类和对象(上篇)

/ 类体:由成员函数和成员变量组成//这里的分号不能省略class为定义类的关键字ClassName为类的名字{}中为类的主体,特别要注意类定义结束时后面分号。类中的元素称为类的成员;类中的数据称为类的属性或者成员变量;类中的函数称为类的方法或者成员函数。1. 声明和定义全部放在类体中,需要注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。//声明和定义全部放在类体中public://显示基本信息private://姓名char* _sex;//性别int _age;

2024-04-06 16:08:47 1517

原创 C++从入门到精通——入门知识

定义命名空间,需要使用到namespace 关键字,后面跟命名空间的名字,然后接一对{}即可{}中即为命名空间的成员。// 1. 正常的命名空间定义// num 是命名空间的名字// 命名空间中可以定义变量/函数/类型/结构体int val;//2. 命名空间可以嵌套int a;int b;int c;int d;//3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。

2024-04-03 13:11:27 1977

原创 【C语言】编译和链接

在ANSI C的任何一种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令(二进制指令)。第2种是执行环境,它用于实际执行代码。2. 翻译环境那翻译环境是怎么将源代码转换为可执行的机器指令呢?这里我们就得展开讲解一下翻译环境所做的事情。其实翻译环境是由和两个大的过程组成的,而又可以分解成:预处理(有些书也叫预编译)、编译、汇编三个过程。一个C语言的项目中可能有多个文件一起构建,那多个文件如何生成可执行程序呢?

2024-03-30 15:49:14 1507

原创 【C语言】预处理

define reg register //为 register这个关键字,创建⼀个简短的名字;) //⽤更形象的符号来替换⼀种实现case //在写case语句的时候⾃动把 break写上。// 如果定义的 stuff过⻓,可以分成⼏⾏写,除了最后⼀⾏外,每⾏的后⾯都加⼀个反斜杠(续⾏符)。思考:在define定义标识符的时候,要不要在最后加上;?建议不要加上;,这样容易导致问题。max = MAX;

2024-03-28 13:01:23 936

原创 【C语言】文件操作

上⾯说的适⽤于所有输⼊流⼀般指适⽤于标准输⼊流和其他输⼊流(如⽂件输⼊流);所有输出流⼀般指适⽤于标准输出流和其他输出流(如⽂件输出流)。

2024-03-26 16:07:12 1516

原创 【C语言】动态内存管理

我们已经掌握的内存开辟方式有:但是上述的开辟空间的方式有两个特点:• 空间开辟大小是固定的。• 数组在申请的时候,必须指定数组的长度,数组空间⼀旦确定了大小不能调整。但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间⼤⼩在程序运⾏的时候才能知道,那数组的编译时开辟空间的⽅式就不能满⾜了。C语言引入动态内存开辟,让程序员自己可以申请和释放空间,就比较灵活了。C语言提供了⼀个动态内存开辟的函数:这个函数向内存申请⼀块连续可用的空间,并返回指向这块空间的指针。• 如果开辟成功,则返回⼀个指向

2024-03-25 16:45:36 1249

原创 【C语言】自定义类型:联合体和枚举

上述的结构其实设计的很简单,⽤起来也⽅便,但是结构的设计中包含了所有礼品的各种属性,这样使得结构体的⼤⼩就会偏⼤,⽐较浪费内存。所以我们就可以把公共属性单独写出来,剩余属于各种商品本⾝的属性使⽤联合体起来,这样就可以介绍所需的内存空间,⼀定程度上节省了内存。联合体的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联合体至少得有能力保存最大的那个成员)。在C语⾔中是可以的,但是在C++是不行的,C++的类型检查比较严格。{}中的内容是枚举类型的可能取值,也叫 枚举常量。

2024-03-22 13:00:47 1214

原创 【C语言】结构体内存对齐问题

我们已经基本掌握了结构体的使用了。那我们现在必须得知道结构体在内存中是如何存储的?内存是如何分配的?所以我们得知道如何。

2024-03-20 13:01:04 985 1

原创 【C语言】整数和浮点数在内存中的存储

其实超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为⼤端字节序存储和⼩端字节序存储,下⾯是具体的概念:是指数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容,保存在内存的低地址处。是指数据的低位字节内容保存在内存的低地址处,而数据的高位字节内容,保存在内存的高地址处。

2024-03-17 16:21:01 1180 1

原创 【C语言】自定义类型:结构体

答案是不⾏的,因为Node是对前⾯的匿名结构体类型的重命名产⽣的,但是在匿名结构体内部提前使⽤Node类型来创建成员变量,这是不⾏的。仔细分析,其实是不⾏的,因为⼀个结构体中再包含⼀个同类型的结构体变量,这样结构体变量的⼤⼩就会⽆穷的⼤,是不合理的。3. 结构体总⼤⼩为最⼤对⻬数(结构体中每个成员变量都有⼀个对⻬数,所有对⻬数中最⼤的)的。4. 如果嵌套了结构体的情况,嵌套的结构体成员对⻬到⾃⼰的成员中最⼤对⻬数的整数倍处,结构。体的整体⼤⼩就是所有最⼤对⻬数(含嵌套结构体中成员的对⻬数)的整数倍。

2024-03-11 16:57:01 1298

原创 【C语言】qsort函数的使用

使用qsort函数排序整型数据。

2024-03-09 17:53:34 671

原创 【C语言】内存函数

• 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。• 和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。• 如果source和destination有任何的重叠,复制的结果都是未定义的。memset是⽤来设置内存的,将内存中的值以字节为单位设置成想要的内容。• 如果源空间和⽬标空间出现重叠,就得使⽤memmove函数处理。• ⽐较从ptr1和ptr2指针指向的位置开始,向后的num个字节。

2024-03-08 11:05:19 847 1

原创 【C语言】左旋字符串(三种实现方式)

这时,我们可以这样理解,虽然我们旋转了4个字符,但我们实际上我们旋转了0个字符;依次类推,旋转5个字符,实际上旋转了1个字符;接下去也是如此......接下来,我们再把字符长度加长,变成abcde 5个字符,旋转 k = 5 个字符时,数组就回到了本身数组 abcde,后面的分析就跟4个字符分析是一样的。就是我们每一次旋转之前,我们就取出 arr 数组的首元素存放在 tmp 中,然后将 arr 数组剩余的每一个元素都往前移动一位,最后我们再把 tmp 中的元素放回 arr 数组末尾的位置。

2024-03-07 17:30:03 729

原创 【C语言】字符函数和字符串函数

这个头⽂件中说明的,C语⾔程序启动的时候就会使⽤⼀个全局的变量errno来记录程序的当前错误码,只不过程序启动的时候errno是0,表⽰没有错误,当我们在使⽤标准库中的函数的时候发⽣了某种错误,就会将对应的错误码,存放在errno中,⽽⼀个错误码的数字是整数很难理解是什么意思,所以每⼀个错误码都是有对应的错误信息的。⽐较str1和str2的前num个字符,如果相等就继续往后⽐较,最多⽐较num个字⺟,如果提前发现不⼀样,就提前结束,⼤的字符所在的字符串⼤于另外⼀个。如果num个字符都相等,就是相等返回0。

2024-03-04 17:20:48 1298 1

原创 【C语言】sizeof和strlen的比较

1. sizeof和strlen的对比1. sizeof和strlen的对比1.1 sizeof在学习操作符的时候,我们学习了sizeofsizeof 是一个单目操作符, 绝对不是函数!!!sizeof 计算变量所占内存内存空间⼤⼩的,单位是字节。如果操作数是类型的话,计算的是使⽤类型创建的变量所占内存空间的⼤⼩。sizeof 只关注占⽤内存空间的⼤⼩,不在乎内存中存放什么数据。运行结果:1.2 strlenstrlen是C语⾔库函数,功能是求字符串⻓度。统计的是从strlen。

2024-03-02 17:00:15 675

原创 【C语言】指针详细解读4

⾸先我们再次理解⼀下⼆维数组,⼆维数组其实可以看做是每个元素是⼀维数组的数组,也就是⼆维数组的每个元素是⼀个⼀维数组。所以,根据数组名是数组⾸元素的地址这个规则,⼆维数组的数组名表⽰的就是第⼀⾏的地址,是⼀维数组的地址。那就意味着⼆维数组传参本质上也是传递了地址,传递的是第⼀⾏这个⼀维数组的地址,那么形参也是可以写成指针形式的。那么要把函数的地址存到⼀个数组中,那这个数组就叫函数指针数组,那函数指针的数组如何定义呢?那数组指针变量应该是:存放的应该是数组的地址,能够指向数组的指针变量。

2024-03-01 19:30:00 1035 1

原创 【C语言】指针详细解读3

⼀维数组传参,形参的部分可以写成数组的形式,也可以写成指针的形式。4. ⼆级指针指针变量也是变量,是变量就有地址,那指针变量的地址存放在哪⾥?这就是。

2024-02-29 08:48:44 1024

原创 【C语言】指针详细解读2

1.const 修饰指针1.const 修饰指针1.1 const修饰变量变量是可以修改的,如果把变量的地址交给⼀个指针变量,通过指针变量的也可以修改这个变量。但是如果我们希望⼀个变量加上⼀些限制,不能被修改,怎么做呢?这就是const的作⽤。编译结果:上述代码中n是不能被修改的,其实n本质是变量,只不过被const修饰后,在语法上加了限制,只要我们在代码中对n就⾏修改,就不符合语法规则,就报错,致使没法直接修改n。

2024-02-27 10:56:21 1042 1

原创 【C语言】指针详细解读1

1. 内存和地址1. 内存和地址1.1 内存在讲述内存之前,我们先拿生活中的例子类比一下:假如我们要寻找酒店的一位朋友,首先我得知道以下一些信息:知道他是,知道酒店名,知道酒店房间号。就表示我们不能去找其他的东西:桌子、凳子等等,只能是是人。酒店名就表示我们只能在这个酒店去寻找,不能去其他地方寻找。房间号就表示我们去酒店的这个地方就能找到。我们把上述的例子对照到我们计算机中,就很好理解。

2024-02-26 15:19:57 1263 2

原创 【C语言】操作符详解

8进制的数字每⼀位是0~7的,0~7的数字,各⾃写成2进制,最多有3个2进制位就⾜够了,⽐如7的⼆进制是111,所以在2进制转8进制数的时候,从2进制序列中右边低位开始向左每3个2进制位会换算⼀个8进制位,剩余不够3个2进制位的最左侧补0换算。表达式的整型运算要在CPU的相应运算器件内执⾏,CPU内整型运算器(ALU)的操作数的字节⻓度⼀般就是int的字节⻓度,同时也是CPU的通⽤寄存器的⻓度。如果某个操作符的各个操作数属于不同的类型,那么除⾮其中⼀个操作数的转换为另⼀个操作数的类型,否则操作就⽆法进⾏。

2024-02-20 18:07:01 1025

原创 【C语言】函数递归

函数不返回,函数对应的栈帧空间就⼀直占⽤,所以如果函数调⽤中存在递归调⽤的话,每⼀次递归函数调⽤都会开辟属于⾃⼰的栈帧空间,直到函数递归不再继续,开始回归,才逐层释放栈帧空间。当我们n输⼊为50的时候,需要很⻓时间才能算出结果,这个计算所花费的时间,是我们很难接受的, 这也说明递归的写法是⾮常低效的,那是为什么呢?事实上,我们看到的许多问题是以递归的形式进⾏解释的,这只是因为它⽐⾮递归的形式更加清晰, 但是这些问题的迭代实现往往⽐递归实现效率更⾼。直到⼦问题不能再被拆分,递归就结束了。

2024-02-15 10:55:39 1018 1

原创 【C语言】如何写一个扫雷游戏

①如果位置不是雷,就显⽰周围有⼏个雷②如果位置是雷,就炸死游戏结束③把除10个雷之外的所有⾮雷都找出来,排雷成功,游戏结束。

2024-02-13 14:25:37 1148 1

原创 【C语言】函数

函数的概念。

2024-02-04 15:45:17 1034 1

原创 【C语言】简单操作符

C 语⾔⽤于⽐较的表达式,称为 “关系表达式”(relational expression),⾥⾯使⽤的运算符就称为“关系运算符”(relational operator),主要有下⾯6个。⼤于运算符⼩于运算符•>=⼤于等于运算符• 12返回112 > 20返回0。关系表达式常⽤于。

2024-02-03 12:03:39 892 1

原创 【C语言】break和continue的使用

简述:在循环执行的过程中,如果某些状况发⽣的时候,需要提前终止循环,这是非常常见的现象。C语言中提供了和两个关键字,就是应⽤到循环中的。的作用是用于永久的终止循环,只要 break 被执行,直接就会跳出循环,继续往后执行。的作用是跳过本次循环 continue 后边的代码,在 for 循环和 while 循环中有所差异的。

2024-02-01 19:04:41 1298 1

原创 【C语言】一维数组和二维数组

①等,也可以自定义的类型;②指的是数组名的名字,这个名字根据实际情况,自己定义即可;③中的常量值是⽤来指定数组的⼤⼩的,这个数组的⼤⼩是根据实际的需求指定就⾏;

2024-01-29 12:00:52 1203

原创 【C语言】分支和循环语句

例子:输入一个整数,判断是否为奇函数。

2024-01-27 18:46:59 982

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除