C语言
文章平均质量分 92
平凡的指针
这个作者很懒,什么都没留下…
展开
-
atoi函数模拟实现和解决单身狗问题(C语言实现)
这里写目录标题atoi函数模拟实现单身狗问题方法1:暴力解决方法2:排序解决方法3:异或解决atoi函数这是个非常有趣的函数,它的功能是把字符串中的数字转化为一个整数。但是其中的坑是有不少的,我们往下面分析分析。先来使用体会体会:#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>int main(){ char arr[] = " -123 45+ "; char .原创 2021-10-07 22:20:48 · 823 阅读 · 7 评论 -
C语言实现冒泡排序的三种优化和qsort函数的解析与模拟实现
这里写目录标题冒泡排序普通版本对外层循环进行优化对内循环进行优化双向冒泡排序qsort函数分析与使用三级目录冒泡排序当我们第一次提起冒泡排序的时候,我们总是要问什么是冒泡排序呢?简单的说,就是重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。而这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡原创 2021-10-03 11:50:31 · 731 阅读 · 5 评论 -
C语言中的文件操作
文件目录什么是文件文件指针文件的打开和关闭fopen函数fclose函数文件的顺序读写字符输出函数 fputc字符输入函数 fgetc文本行输出函数 fputs文本行输入函数 fgets二级目录三级目录什么是文件磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件。程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运原创 2021-09-30 11:56:42 · 9233 阅读 · 12 评论 -
C语言中的动态内存管理
文章目录为什么存在动态内存分配动态内存函数的介绍malloc和free常见的动态内存错误几个经典的例题柔性数组二级目录三级目录为什么存在动态内存分配我们常见的开辟方式有:int val = 20; //在栈空间上开辟四个字节char arr[10] = {0}; //在栈空间上开辟10个字节的连续空间但是上述的开辟空间的方式有两个特点:空间开辟大小是固定的。数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空原创 2021-09-28 22:58:37 · 144 阅读 · 3 评论 -
C语言内存操作函数解析和模拟实现
文章目录内存操作函数memsetmemcpymemmovememcmp内存操作函数memsetC 库函数 void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)到参数 str 所指向的空间的前 n 个字节。头文件<string.h>声明void *memset(void *str, int c, size_t n)参数1str – 指向要填充的内存块参数2c – 要被设置的值。该值以 int.原创 2021-09-23 14:25:28 · 234 阅读 · 4 评论 -
C语言中字符串函数的浅谈与造轮子
文章目录字符串函数分析与造轮子求字符串长度函数:strlen长度不受限制的字符串函数:strcpystrcatstrcmp长度受限制的字符串函数:strncpystrncatstrncmp字符串查找函数:strstrstrtok字符串函数分析与造轮子C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串中 或者字符数组 中。 字符串常量 适用于那些对它不做修改的字符串函数。下面我们来认识库中的一些字符串函数并且模拟实现。求字符串长度函数:strlenC .原创 2021-09-21 21:49:38 · 382 阅读 · 3 评论 -
C语言自定义类型 结构体、位段、枚举、联合体的分析
文章目录结构体结构体类型的声明结构体变量的定义和初始化结构体内存对齐位段什么是位段位段的内存分配位段的跨平台问题枚举枚举类型的定义枚举的优点联合体(共用体)联合类型的定义联合的特点联合大小的计算结构体结构体类型的声明说起结构体,那什么是结构体呢?结构体是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。总的来说就是不同类型的集合构成了结构体,而相同类型的集合构成了数组。这也是结构体与数组的区别。比如要描述一位学生的身份,我们可以有以下声明:struct student{.原创 2021-09-20 21:13:59 · 285 阅读 · 7 评论 -
浅谈C语言将字符串中的空格替换成%20的几种方法(附图超级详细解答)
文章目录题目分析暴力位移法巧用数组法高效倒放法题目分析将字符串中的空格替换为%20。样例: “abc defgx yz” 转换成 “abc%20defgx%20yz”。当我们第一次看到题目时,肯定会想,一个空格怎么能放3个字符进去呢?那有什么办法呢,接下来让我们一步步地分析分析。暴力位移法首先最让人想到的方法肯定是 把空格后的字符往后面移动两位,然后再放字符“%20”,但是种方法只能从后往前挪,如果从前往后挪,会把字符给覆盖掉。所以我们设两个指针,一个负责找空格,一个负责挪动空格后面的字符。原创 2021-08-17 21:06:53 · 3807 阅读 · 7 评论 -
C语言中表达式求值和整形提升的那些坑那些事
文章目录数据在内存中的范围二级目录三级目录数据在内存中的范围我们知道数据有很多种类型,阔以看看我这篇文章 数据在内存中的存储 里面详细介绍了各种类型的数据。下面都是在32位平台下分析的。我们先以char类型为例子,char类型占一个字节,看看它的范围是多少,图片如下:因此我们可以推导出其他类型的范围:类型存储空间大小数据范围char1个字节-128 ~ 127char第二列文本居右第三列文本居左char第二列文本居右第三列文本居左char第原创 2021-08-15 14:18:31 · 504 阅读 · 5 评论 -
C语言剖析数据在内存中的存储
这里写目录标题数据类型介绍二级目录三级目录数据类型介绍数据类型的基本分类:整形家族:charunsigned charsigned charshortunsigned short [int]signed short [int]intunsigned intsigned intlongunsigned long [int]signed long [int]二级目录三级目录...原创 2021-08-14 12:26:45 · 862 阅读 · 4 评论 -
C语言深层次的修炼——函数栈帧的创建与销毁
目录栈帧是什么大概轮廓函数创建过程函数销毁过程栈帧是什么不知大家接触过 “栈帧” 这个词没有,我第一次听以为是函数战争,心里怎么想也想不明白,战争(栈帧)是什么鬼????然后我理解后才明白 栈(Stack)简单说, 是由于函数运行而临时占用的内存区域。而帧是函数开辟的会为它在栈上建立一个帧(frame)我们了解后,那栈帧有什么用呢?其实我们在学习C语言的时候会用很多的疑问,比如:1.main函数肯定是要被调用的,那是被谁调用的呢?2.函数里面的局部变量是怎么创建的?3.局部变量又为什么是默.原创 2021-08-08 19:24:52 · 427 阅读 · 4 评论