![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 75
蛋翼
这个作者很懒,什么都没留下…
展开
-
C语言基础15——程序环境和预处理。程序环境讲解、宏讲解、条件编译、文件包含、offsetof宏实现
程序的翻译环境和执行环境在ANSI C的任何一种实现中,都存在两个不同的环境:第一种:翻译环境,在这个环境中源代码被转换为可执行的机器指令。第二种:执行环境,它用于实际代码执行。翻译环境/* * 组成一个程序的每个源文件通过编译过程,分别转换成目标代码。(object code) * 每个目标文件由链接器(linker)捆绑在一起,形成一个单一而完整的可执行程序。 * 连接器同时也会引入标准C函数库中任何被该程序所用到的函数,而且它可以搜索程序员个人的程序库,将需要的..原创 2022-05-16 01:00:00 · 179 阅读 · 0 评论 -
C语言基础14——文件操作。文本文件或二进制文件读写。通讯录的改造。文件缓冲区讲解
目录为什么使用文件?什么是文件?文件的打开和关闭文件指针文件的打开和关闭文件的打开方式流重定义文件文件流文件的顺序读写以字符形式读写文本文件fputc()函数fgetc()函数以字符串形式读写文本文件fputs()函数fgets()函数格式化读写文件fprintf()函数fscanf()函数以数据块的形式读写文件fwrite()函数fread()函数三种输入/输出函数的比较改造通讯录文件的随机读写fsee原创 2022-05-15 01:00:00 · 5407 阅读 · 0 评论 -
C语言基础13——动态内存管理。动态开辟内存函数、常见动态内存错误、C程序内存开辟讲解、柔性数组、atoi函数讲解
目录为什么存在动态内存分配?动态内存函数的介绍malloc()和free()函数calloc()函数realloc()函数常见的动态内存错误经典笔试题C/C++程序的内存开辟柔性数组练习atoi()函数为什么存在动态内存分配?我们使用过的开辟空间的方法:int val = 20; //在栈空间上开辟了4个字节char arr[10] = {0}; //在栈空间上开辟10个字节的连续空间/* * 上述开辟空间的方式有两个特点: * - 开原创 2022-05-14 01:00:00 · 295 阅读 · 0 评论 -
C语言基础12——自定义类型。结构体、位段、枚举、联合体。通讯录
结构体结构体的声明struct 结构体名字{ 结构体成员};//注意大括号后面的分号;不能少,这是一条完整的语句。//例如描述一个学生:struct Stu{ char name[20];//名字 int age; //年龄 char sex[5];//性别 char id[20];//学号};//分号不能丢 特殊声明:匿名结构体 //匿名结构体:结构体没有名字。//匿名结构体只有在声明的时候才能创建变量。并且之后无法再次创建,因原创 2022-05-13 01:00:00 · 953 阅读 · 0 评论 -
C语言基础11——字符串函数、内存函数。字符串函数模拟实现、字符函数讲解、内存函数模拟实现
目录求字符串长度函数strlen()函数不可设置长度的字符串函数strcpy()函数strcat()函数strcmp()函数可设置长度的字符串函数strncpy()函数strncat()函数strncmp()函数字符串中查找字符strchr()strrchr()字符串查找函数strstr函数strtok()函数错误信息报告strerror()函数perror()函数字符函数字符分类函数字符转换函数内存函数memc原创 2022-05-12 01:00:00 · 352 阅读 · 0 评论 -
C语言基础10——指针进阶。字符指针、指针数组、数组指针、函数指针、函数指针数组、回调函数、数组名详解、杨氏矩阵、字符串旋转
字符指针 字符指针的另一种使用方式 #include <stdio.h>int main(){ //字符指针的使用 char ch = 'q'; char * pc = &ch; //本质上是把这个字符串的首字符地址存储在了指针变量ps中 const char * ps = "hello world"; //数组存储字符串时,是把整个字符串都存储在其中。 char arr[] = "hello world";原创 2022-05-11 01:00:00 · 446 阅读 · 0 评论 -
C语言——原码, 反码, 补码 详解
目录一. 机器数和真值1、机器数2、真值二. 原码, 反码, 补码的基础概念和计算方法.1. 原码2. 反码3. 补码三. 为何要使用原码, 反码和补码四 原码, 反码, 补码 再深入同余的概念负数取模开始证明一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.比如,.转载 2022-05-02 15:21:29 · 12930 阅读 · 5 评论 -
C语言基础09——数据在内存中的存储。整型的存储、大小端讲解、浮点数的存储、杨辉三角、找凶手、猜名次
目录数据类型基本内置类型类型的基本分类整型在内存中的存储计算机中整数的三种表示方法:原码、反码、补码大小端练习浮点型在内存中的存储为什么以下程序输出结果与想象不同?浮点数存储规则练习printf与scanf输入输出格式总结:%c 用于打印字符%s 字符串%d 用于有符号十进制整数%u 用于无符号十进制整数%f float浮点型%lf double浮点型%x 无符号十六进制整数1122aabb(小写)%X 无符号十六进制整数原创 2022-05-10 01:00:00 · 564 阅读 · 0 评论 -
C语言基础08——程序调试。断言、const讲解、strcpy()函数模拟实现、调整奇偶数顺序
目录以下程序发生死循环字符串拷贝断言的使用const修饰指针变量继续优化我们写的strcpy函数strcpy优化最终版自己编写strlen错误出现的类型、Debug与Release的区别编写方法,调整奇偶数顺序以下程序发生死循环/* * - i 和arr都是局部变量,局部变量存放在栈区上。 * - 栈区内存的使用习惯是:先使用高地址空间,再使用低地址空间 * - 数组随着下标的增长地址是由低到高变化的。 * * - 如果是先定义的i,再定义的数组。原创 2022-05-09 01:00:00 · 144 阅读 · 0 评论 -
C语言基础07——结构体
结构体类型的声明与初始化结构体的声明 结构体使C语言有能力描述复杂类型。结构体是一种集合,它里面可以包含多个变量或数组,它们的类型可以相同,也可以不同,这些变量或数组都称为结构体的成员(Member)。 结构体也是一种数据类型,它由程序员自己定义,可以包含多个其他类型的数据。 像 int、float、char 等是由C语言本身提供的数据类型,不能再进行分拆,我们称之为基本数据类型;而结构体可以包含多个基本类型的数据,也可以包含其他的结构体,我们将它称为复杂数据类型或构造数据类型。..原创 2022-05-08 01:00:00 · 361 阅读 · 0 评论 -
C语言基础06——指针、指针运算
目录什么是指针?指针和指针类型野指针指针运算指针和数组二级指针指针数组练习什么是指针? 指针就是地址。地址唯一标识一块地址空间。 指针变量:用于存放地址的变量。 地址的组成、指针的大小 /* * 内存是怎么样编号的?一个内存单元占用多大的空间? * 众所周知,我们的电脑分32位和64位的。 * - 32位的电脑,有32根地址线(这个地址线是物理线),通电就会产生电信号,强电信号就是1,弱电信号就是0 * 而电信..原创 2022-05-07 01:00:00 · 466 阅读 · 0 评论 -
C语言基础05——操作符与表达式求值。整型提升、二进制中1的个数、不使用中间值交换两个变量
算术操作符+ - * / % 加 减 乘 除 取余 除了%以外,其他的几个操作符都可以用于整数和浮点数 对于/操作符,如果两个操作数都为整数,执行整数除法,省略小数点。而只要两端有一个浮点数,则进行浮点数除法,小数点不会被省略。 %操作符的两个操作数必须为整数。返回的是余数 #include <stdio.h>int main(){ //如果是整数之间的除法,则计算出的也是整数,不会出现小数原创 2022-04-11 21:09:14 · 863 阅读 · 0 评论 -
C语言基础04——数组 。冒泡排序、三子棋、扫雷、向有序序列中插入数据、逆序数组元素
目录二维数组数组越界数组作为函数参数数组的应用实例1:三子棋数组的应用实例2:扫雷游戏数组练习- 数组如果初始化,可以不指定数组大小。并且数组大小不能传入一个变量。- 数组是一组相同类型元素的组合:int类型数组只能存储int类型、char类型数组只能存储char类型- 数组在内存方面存储的时候,数组中元素的内存地址是连续的。- 所有的数组都是拿“首元素的内存地址”作为整个数组对象的内存地址。 数组中首元素的内存地址作为整个数组对象的内存地址。- 数组中原创 2022-04-18 17:28:55 · 3360 阅读 · 0 评论 -
C语言基础03——函数。字符反向排序、逆序输出单词
函数是什么? 函数是可以完成某个特定功能的并且可以重复利用的代码片段。一般一个函数就是一个功能单元,假设在以后的开发中,某个功能是可以独立抽取出来的,建议定义为函数,这样以后要是需要实现这个功能,那么直接调用这个函数即可,不再需要重复编写。库函数 什么是库函数? 如printf()打印函数、strcpy()字符串拷贝函数、pow()次方运算函数,像这些完成基础性功能的函数,我们每个人在开发的过程中都可能用的到,为了支持可移植性和提高程序的效率,所以C语言的基础库中提供了一系列类似的库函数原创 2022-04-08 22:01:59 · 1230 阅读 · 0 评论 -
C语言基础02——控制语句。二分查找、随机数讲解、求自幂数、整数逆序、X图案打印、猜数字、公约数公倍数、素数
C语言控制语句:if、switch、whille、do..while、for、goto、break、continue、return语句。练习:计算n的阶乘、计算 1~n的阶乘和、二分法查找、多个字符从两端向中间汇聚、随机数rand()、srand()、tim()函数详解、猜数字游戏、三个整数从大到小输出、求两个数的最大公约数、最小公倍数、判断是否为闰年、素数、整数逆序、九九乘法表、求自幂数、编写程序,数一下1~100之间所有整数中出现了多少个9、求十个数中的最大值、7个数,去掉一个最高和一个最的,求平均数。原创 2022-04-07 16:21:50 · 1478 阅读 · 2 评论 -
C语言——冒泡排序、直接插入排序、直接选择排序、快速排序
目录冒泡排序注释版:无注释版直接插入排序注释版:无注释版:使用FOR循环实现:直接选择排序快速排序注释版无注释版:冒泡排序注释版:/* 冒泡排序算法 1、每一次循环结束之后,都要找出最大的数据,放到参与比较的这堆数据的最右边。(冒出最大的那个气泡) 2、核心: 拿着左边的数字和右边的数字比对,当 左边 > 右边 的时候,交换位置。 原始数据: 3,2,7,6,8 ...原创 2022-04-06 01:05:34 · 1765 阅读 · 0 评论 -
C语言基础01——初识C语言
什么是c语言?第一个c语言程序、数据类型、常量、变量、字符串、转义字符、注释、选择语句、循环语句、函数、数组、关键字extern、auto、register、typedef、static、常量和宏、格式化输入输出printf()、scanf(),gets、getchar、缓冲区讲解原创 2022-04-05 09:12:59 · 1064 阅读 · 0 评论