自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 动态内存管理

没有足够的空间时,则在堆空间上另找一个合适大小的连续空间来使用,把旧的空间释放,这样返回值时一个新的内存地址。free函数用来释放动态开辟的内存,ptr指向的是要释放空间的起始地址。如果ptr指向的空间不是动态开辟的,那么free函数的行为是未定义的;如果开辟成功,则返回一个指向开辟好的空间的指针,开辟失败则返回NULL指针;ptr是要调整的内存空间的起始地址,size是调整后的大小,这个函数调整原内存空间大小的基础上,还会将原来内存中的数据移动到新的空间。常见的动态内存的错误。

2024-12-18 21:53:45 275

原创 枚举

枚举在C语言中通常用于提高代码的可读性,使得程序员可以使用更加由意义的符号代表一组相关的常量值,而不必记住这些常量对应的具体数值。{}中的内容是枚举类型的可能取值,也叫枚举常量,默认从0开始,依次递增1;在声明枚举类型时也可以赋初始值。5.枚举常量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用。2.和#define定义的标识符比较,枚举有类型检查,更加严谨。3.便于调试,预处理阶段会删除#define定义的符号。4.使用方便,每次可以定义多个常量。1.增加代码的可读性和可维护性。

2024-12-18 14:53:15 243

原创 联合体

给联合体其中一个成员赋值,其他成员的值也跟着变化,在一个时间点只能使用一个成员(根据此特点,可以在适当的时候使用联合体)联合变量的大小至少是最大成员的大小;当最大成员的大小表示最大对齐数的整数倍的时候,要对齐到最大对齐数的整数倍。像结构体一样,联合体也是由一个或多个成员构成的,但是所有成员共用一块内存空间,故联合体也叫共用体。联合体与结构体的对比。

2024-12-18 14:41:48 214

原创 位段

位段的几个成员共有同一个字节,这样有些成员的起始位置并不是某个字节的起始位置,是没有地址的,所以不能对位段的成员使用&操作符。数字表示相应的成员占几个二进制位(比特),因此位段式的结构体大小明显小于同样成员的普通结构体的大小的,其实位段的出现主要是在完成功能的情况下尽量节省内存。4.当一个结构包含两个位段,第二个位段成员比较大,无法容纳与第一个位段剩余的位时,时舍弃剩余的位还是利用时不确定的。网络传输的数据报中有许多属性只需几个bit位就能描述,这里使用位段,能够实现想要的效果,也节省了空间。

2024-12-18 14:14:36 176

原创 结构体

原因在于,为了访问未对齐的内存,处理器需要作两次内存访问,而对齐的内存访问仅需要一次访问。2.其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处(对齐数=min{编译器默认的对齐数,该成员变量大小};4.如果嵌套了结构体,则嵌套的结构体成员对齐到自己的成员中最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体)的整数倍。结构的每个成员可以是不同类型的变量,如:标量、数组、指针,甚⾄是其他结构体。1.结构体的第一个成员对齐到和架构提变量起始地址偏移量为0的地址处。

2024-12-18 11:37:20 530

原创 字符3

atol将字符串转换成long类型;stryol将字符串转换成long类型,可以按照各种进制转换。

2024-12-18 08:29:54 107

原创 内存块

用于设置内存块的内容,以字节为单位设置。memmove在拷贝内存时允许重叠。

2024-12-18 08:15:01 112

原创 字符2

当源字符串的字符个数不够时,在末尾追加一个'\0'。strcat在追加的时候,把源字符串的所有内容,包括'\0'都进行拷贝;使用strncat时,源字符串不一定有'\0'n表示最多拷贝n个字符到目标字符串,当源字符串的字符个数不够时,就拷贝'\0'直至拷贝n个(源字符串不一定有'\0'),相对strcpy更加安全。用于查找str2指向的字符串在str1指向的字符串第一次出现的位置。

2024-12-17 21:44:47 253

原创 字符1

C语言中有一系列的函数是专门做字符分类的,这些函数的使用都需要包含一个头文件<ctype.h>

2024-12-17 20:28:51 272

原创 函数2

如果把函数的指针作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的实践或条件发生时由另外一方调用的,用于对该实践或条件进行响应。typedef是用来给类型重命名的,可以将复杂的类型简单化。函数有地址,函数名 和 &函数名 拿到的都是函数的地址。typedef关键字。

2024-12-16 20:12:56 359

原创 指针与数组

数组名就是数组首元素的地址,但有两个例外:sizeof(数组名)计算整个数组的大小,单位是字节;&数组名取出整个数组的地址,展示为首元素的地址,+1跳过整个数组。数组传参本质上传递的是数组首元素的地址,函数的形参部分理论上应该用指针变量来接收首元素的地址。一维数组传参,形参布恩可以写成数组的形式,也可以写成指针的形式。指针数组模拟二维数组。

2024-12-16 17:13:13 513

原创 指针

3.void*可以理解为无具体类型的指针(泛型指针),可以接受任意类型地址,但帮你直接进行指针的+-整数和解引用的运算。一般void*类型的指针是使用在函数参数的部分,用来接收不同类型的地址,需要使用时再转换成需要的类型。2.const放在*左边,修饰指针变量指向的对象,即不能通过指针变量修改指向的内容,但可以修改指针变量本身,即指针变量的指向;函数内部要修改主调函数中的变量的值时,需要传址调用。通过取地址操作符(&,去除变量所占的字节中地址较小的那一个)拿到的地址是一个数值,可以存放在指针变量中。

2024-12-15 09:30:38 327

原创 函数递归

很多问题递归的形式比非递归更加清晰,但这类问题的迭代实现往往比迭代实现效率更高。当一个问题非常复杂,难以用迭代的方式实现时,递归的简洁性可以补偿它所带来的运行时的开销;当用递归有明显缺陷时(比如斐波那契数列)递归函数的调用过程会占用多层函数栈帧,回归时才逐层释放,递归层次太深会导致浪费太多栈空间,可能引起栈溢出的问题。可以用迭代(循环)的方式替代递归解决问题。递归存在限制条件,且每次递归调用之后越来越接近这个限制条件。以上循环需要多次计算,计算次数成指数增长。

2024-12-10 20:40:10 199

原创 字符串和字符数组

1.C语⾔中有字符类型,但是没有字符串类型,C语⾔中字符串就是由双引号引起来的⼀串字符。与上例不同,使用常量字符串初始化的时候,数组多了一个'\0'字符。strlen函数统计的是字符串中\0之前的字符的个数。2.字符串中隐藏一个\0,是字符串结束的标志。可以使用scanf和printf函数。字符串常量初始化字符数组。字符数组的创建和初始化。字符数组的输入和输出。

2024-11-30 11:43:56 132

原创 小南找书

创建过程中使用的循环嵌套可能导致调试困难;编号比较时每次需包含大量运算,效率较低。2.编号自减(上述程序展示的方法)1.创建二维数组,进行编号的比较。

2024-11-21 11:23:25 377

原创 打印图形

1.改进binomialCoeff函数,将计算出的元素存入二维数组。1.binomialCoeff函数包含大量的重复计算。2.使用其他方法计算第n个素数,如埃拉托斯特尼筛选法。2.nthPrime函数效率低下。

2024-11-21 10:10:10 313

原创 分数加减

【代码】分数加减。

2024-11-19 21:57:04 266

原创 卡牌排序

【代码】卡牌排序。

2024-11-17 22:20:07 238

原创 函数

非void的函数必须使用return语句来指定将要返回的值,如果return语句中的表达式类型和函数的返回类型不匹配,那么系统将会把表达式的类型隐式转化成返回类型。在调用函数时,第一个参数是数组的名字(不包含方括号),第二个参数是数组的长度。编译器在调用前遇到原型,每个实际参数的值被隐式地转换成相应形式参数的类型。以上定义中第一个参数的值确定了第二个参数的长度(参数的顺序很重要)。用*是合法的,因为形式参数的名字是可选的。4.函数可以改变数组型形式参数的元素,且改变会在相应的实际参数中体现出来。

2024-11-17 20:23:44 1638

原创 数组

数组是含有多个数据值的数据结构,并且每个数据值具有相同的数据类型。数组的元素可以是任何类型,数组的长度可用任何(整数)常量表达式(不超过10000)指定。因为程序以后改变时昆明需要调整数组的长度,所以较好的方法是用宏来定义数组的长度。2.以下表达式可能出现警告,因为i的类型是int(有符号类型),sizeof返回的值类型为size_t(无符号类型),故可进行强制转换。初始化式完全为空或比数组长是非法的,如果初始化式比数组短,那么数组中剩余的元素赋值为0;如果数组的长度是省略的,指示符可以是任意非负整数。

2024-11-15 11:03:12 363

原创 基本类型

无符号类型,包括标准的(unsigned char ,unsigned short ,unsigned int ,unsigned long ,unsigned long long ,_Bool)和扩展的。表达式sizeof(类型名) 的值是一个无符号整数,代表存储属于类型名的值所需要的字节数。有符号整型,包括标准的(unsigned char ,short ,int ,long ,long long)和扩展的。2.字符'a'的值为97,'A'为65,'0'为48,' '为32。

2024-11-15 08:39:53 642

原创 东南西北

【代码】东南西北。

2024-11-14 08:40:33 142

原创 对称画

【代码】对称画。

2024-11-13 23:15:20 392

原创 计算日期

【代码】计算日期。

2024-11-13 22:55:49 200

原创 变数

【代码】变数。

2024-11-05 22:15:54 189

原创 循环

4.C99中,表达式1可以替换成一个声明,被声明的变量不需要在语句前进行声明;如果变量在之前已进行声明,这个语句将创建一个新的变量且该值仅用于循环内,不可在循环外访问。2.表达式1是循环开始执行前的初始化步骤,只执行一次;表达式2控制循环的终止;表达式3是每次循环中最后执行的一个操作。goto语句可以跳转到函数中任何有标号的语句处(C99中不能用于绕过变长数组)1. do 语句 while (表达式);2.先执行循环体,在计算控制表达式的值。1.while (表达式)语句。2.首先计算控制表达式的值;

2024-11-04 07:53:40 157

原创 选择语句

2.圆括号中的表达式必须是整型表达式,不能用浮点数和字符串;常量表达式必须是整数或字符,不能包含变量和函数调用;分支标号后可跟任意数量的语句。1._Bool flag :是整数类型,但只能赋值为0或1;向_Bool变量中存储非零值会导致变量赋值为1。①宏定义#define TRUE 1,使对flag的赋值有更加自然的形式。②#define BOOL int 可以定义一个可用作类型的宏。1.if (表达式) 语句 else 子句。case 常量表达式:语句。case 常量表达式:语句。

2024-11-01 11:01:37 269

原创 分解数字

【代码】分解数字。

2024-10-24 20:03:33 324 1

原创 四边形判断

【代码】四边形判断。

2024-10-23 20:35:31 298

原创 交换小数

2.使用int强行转换,可以避免使用循环,简化程序。1.根据精度选择float或double。

2024-10-20 22:03:26 279

原创 质因数分解

2.能用for循环解决的问题尽量避免数组,现阶段使用数组会使问题复杂化。1.把握好数学上质数的性质。

2024-10-19 22:11:10 356

原创 冰雹猜想

【代码】冰雹猜想。

2024-10-17 16:27:07 463

原创 求助!阶乘求和

【代码】求助!阶乘求和。

2024-10-17 15:53:36 401

原创 关灯

此次代码的本质是数学问题。

2024-10-15 21:32:27 361

原创 奇偶数

1.循环嵌套循环时注意及时跳出。

2024-10-11 21:24:33 318

原创 统计进位

1.在数组的使用中,注意下标的范围是否合法。

2024-10-09 22:49:10 396

原创 个税计算

1.注意每一部分代码的共同点,避免小细节上失误,如关系运算符。2.常量较多时最好使用宏定义。

2024-10-09 21:20:41 556

原创 球的体积

2.结果的数据类型为浮点数,所以4/3需以浮点数形式出现。

2024-10-08 21:02:24 278

原创 十进制转八进制

【代码】十进制转八进制。

2024-10-07 20:56:53 316

原创 身高

2.输入小数应添加f。

2024-10-07 20:50:34 381

空空如也

空空如也

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

TA关注的人

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