C语言学习
文章平均质量分 84
衡一兄
这个作者很懒,什么都没留下…
展开
-
[C语言] 程序的编译过程
[C语言] 程序的编译过程一、编译环境编译环境分为两部分:1.编译,2.链接其中编译又分为三个部分:预编译—>编译—>汇编1. 编译有三个步骤 : 预编译—>编译—>汇编1.1 预编译展开包含的头文件删除注释替换我们定义的#define符号1.2 编译将C代码转化为汇编代码语法分析词法分析语义分析符号汇总:将全局函数和库函数收集汇总起来1.3 汇编将汇编代码转化为二进制指令(机器语言)形成符号表:对应全局函数和库函数的地址将原创 2022-02-24 14:57:46 · 1489 阅读 · 0 评论 -
[C语言]文件操作函数
[C语言]文件操作函数 本文主要学习**fopen,fclose,fgetc,fgets,fputc,fputs,fwrite,fread,feof**这几个文件操作函数。 以上函数,需要导入头文件 stdio.h 为什么要学习这些函数?肯定是因为我们需要存储我们的数据,使数据放入到硬盘中方便保存。 本文中梳理一些最常见的文件操作函数。前言:文本文件和二进制文件 根据数据的组织形式,数据文件被称为文本文件或者二进制文件。 数据在内存中以二进制的形式存储,如果不加转换的输原创 2022-02-23 12:19:52 · 7821 阅读 · 0 评论 -
[C语言]动态内存管理
[C语言]动态内存管理关于动态内存管理,主要学习4个函数,分别是 malloc,calloc,realloc,free。这四个函数都需要引入头文件 stdlib.h。空间开辟大小是固定的。数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。记住:谁开辟的空间就谁去释放。动态内存函数介绍mallocvoid* malloc (size_t size);如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一原创 2022-02-18 21:32:50 · 605 阅读 · 0 评论 -
[C语言] 通讯录 (动态内存版)
[C语言] 通讯录 (动态内存版)如果不会动态内存管理的同志,可以先移步到本文只会有简短的注释,并不会详细说明test.c(主文件)#define _CRT_SECURE_NO_WARNINGS 1#include "contact_dy.h"void menu() { printf("**********************************\n"); printf("**** 1.add 2.del *******\n"); printf("****原创 2022-02-18 21:28:21 · 567 阅读 · 0 评论 -
[C语言]位段和联合类型
[C语言]位段和联合类型位段和联合类型都是为了压缩空间成本而存在的。**本文使用的编译器为 VS2019!**本文的内容和编译器息息相关,望周知。一、位段看一下百度的定义:C语言允许在一个 结构体 中以位为单位来指定其成员所占 内存 长度。长度的单位是bit位,我们直接来看实例,下面的结构体 ABC 就是一个含有位段的结构体类型。struct ABC{ int a:5; int b:20; int c:10; int d:3;};那这个位段ABC的大小是多少呢原创 2022-02-18 17:30:01 · 493 阅读 · 0 评论 -
[C语言]memcpy 和 memmove的使用 与 模拟实现
[C语言]memcpy 和 memmove的使用 与 模拟实现建议大家学会一行字按一次 ctrl+s,也不要胡乱升级win11,写了一个小时,突然出错,白写了,只得重写mencpy和mommove是内存中的函数,主要用来拷贝数据,不同于 strcpy的是它们可以处理所有类型的数据memcpyvoid* memcpy(void* destination,const void* source, size_f num)第一个参数表示,我们的目标地址,第二个参数表示,我们的源头地址,也就是 被拷贝地址原创 2022-01-21 18:48:19 · 510 阅读 · 0 评论 -
[C语言]数组和指针的sizeof 与 strlen的输出
本次学习sizeof与 strlen的输出前提知识:有指针基础(学习过 指针数组、数组指针,函数指针)有数组基础(对 一维数组 与 二维数组 的 传参有了解)这次学习有个非常非常非常重要的知识点,贯彻了整篇文章,请大家务必要牢记大家都知道,数组名 是首元素的地址但是有两个例外:sizeof(数组名),这里的数组名是表示整个数组的,计算的是整个数组的大小,单位是字节。&数组名,这里的数组名也表示整个数组,取出的是数组的地址一定要牢记这两个例外开始我们的原创 2022-01-19 11:35:16 · 1266 阅读 · 1 评论 -
[C语言]使用 qsort快速排序函数,和复现qsort(冒泡方法)
在对数组进行排序的时候,很多的初学者都是使用冒泡排序,但是冒泡排序的效率却不高,而且还需要自己动手,没错我就是懒,并只能排序数字类型的数据而qsort基本上所有的数组都能够排序,可见其强大;冒泡排序如下:#include <stdio.h>//冒泡排序函数int* bubble_sort(int* arr, int sz){ for (int i = 0; i < sz - 1; i++) { for (int j = 0; j < sz - i - 1; j++原创 2022-01-18 23:08:11 · 450 阅读 · 0 评论 -
整型和浮点型在内存中的存储
整型和浮点型在内存中的存储整型的存储整型家族的表示范围: limits.h计算机中的整数有三种表示方法,即原码、反码和补码。而在计算机内存中存储的是 补码三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位负整数的三种表示方法各不相同。符号位就是二进制码的第一位。原码直接将二进制按照正负数的形式翻译成二进制就可以。反码将原码的符号位不变,其他位依次按位取反就可以得到了。补码反码+1就得到补码。表现方式正整数的原码、反码和补码相同。负整原创 2022-01-04 21:03:36 · 1057 阅读 · 1 评论 -
扫雷解析(含递归)
扫雷解析(含递归)原创 2021-12-13 13:16:51 · 3697 阅读 · 0 评论 -
【C语言】超详细的----三子棋游戏---- 实现与解析
【C语言】超详细的----三子棋游戏---- 实现与解析本次学习写一个三子棋软件,基本上用到了之前所学的所有知识,下面开始解析这个 三子棋游戏。三子棋从下往上 的组成有:棋盘,我方棋,对方棋。三个部分组成。棋盘的要素简述首先棋盘是一个3*3的正方形(所以使用二维数组),每一个格子应该初始化成为 空格 ' ' ,以便放入棋子。第二,方格间应该要有分隔线构成,但是要注意边界没有棋盘的周围没有分割线。第三,定义棋子实现,我们用 * 来表示我方棋子,用 # 表示电脑棋子。第四,定义胜利条件,胜利条原创 2021-11-25 08:56:50 · 629 阅读 · 0 评论 -
初识C语言
c初识C语言1.1hello worldc语言是从主函数的第一行开始执行的所有C语言代码都得有main函数–入口#include <stdio.h>// #include的意思是“包含”,包含stdio.h的文件 //stdio -standard input output标准输入输出 (std- standard)(i- input)(o- output)。//int就是整型的意思;main前面的int表示main函数调用以后返回一个整型值。i原创 2021-11-17 18:55:05 · 4396 阅读 · 0 评论