
C语言
文章平均质量分 82
裙下的霸气
01010101010
展开
-
程序编译和预处理
ANSI C 定义了许多宏。在编程中可以使用这些宏,但是不能直接修改这些预定义的宏。宏描述DATE当前日期,一个以 “MMM DD YYYY” 格式表示的字符串常量TIME当前时间,一个以 “HH:MM:SS” 格式表示的字符串常量。FILE当前文件名的一个字符串常量。LINE当前行号的一个整形常量。STDC当编译器以 ANSI 标准编译时,则定义为 1。例如:(VS2022不遵从ANSI标准。。。)原创 2022-08-20 12:43:50 · 465 阅读 · 0 评论 -
函数栈帧的创建与销毁
分析:首先是把变量 c 的值放入eax寄存器中,接着弹出edi,esi,ebx,重点看下,mov esp ,ebp这句代码,这个就是把ebp的地址赋值给esp,相当于esp 和 ebp同时指向了MyAdd的栈低处,也就是释放了栈帧空间, 然后pop ebp,就是弹栈,ebp处是栈底,栈底就是main函数的栈底,也就是说pop后,ebp又回到了main函数的栈底,而esp就在call的下一条指令处啦。不同的编译器可能方向不同,增长方向是一样的,必如栈都是向低地址去,堆区向高地址去。为什么要压入返回值呢?...原创 2022-08-05 17:02:47 · 125 阅读 · 0 评论 -
通讯录 简易版本
实现通讯录原创 2022-06-23 12:12:50 · 279 阅读 · 0 评论 -
文件操作 .
我们前面学习结构体时,写了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。 我们在想既然是通讯录就应该把信息记录下来,只有我们自己选择删除数据的时候,数据才不复存在。这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化...原创 2022-04-25 19:05:26 · 158 阅读 · 0 评论 -
初始C语言(1)
一 定义 printf ——库函数 用来在屏幕上打印相关的数据,使用库函数,就要包括相对应的头文件 stdio——标准输入输出 main—— 是程序的入口 float age = 55f(如果不加f,系统自动默认是double类型,此时在前面加float会报警) “ ”引起来的是字符串 ‘ ’引起来的是字符 全局变量 —— 在大括号外面的 局部变量 —— 在大括号内部定义 当全局变量和局部变量冲突的时候(...原创 2022-02-26 10:00:39 · 100 阅读 · 0 评论 -
初始C语言(2)
一 常量字面常量: ‘c’ int a = 100 “abcdef”(字符串常量) 3.14 const修饰的常变量:只是赋予该变量一个常属性,自身仍是变量,如下图:用数组的方法可以验证这里的n仍是变量 !3.#define定义的标识符常量#define MAX 100.这里的MAX是常量,无法再次进行更改4.枚举常量是一种函数自定义的常量系统里有这些常量所对应的值,且无法重新赋值二 字符串 1.\0的作用f 后面隐藏了“...原创 2022-02-26 20:27:45 · 282 阅读 · 0 评论 -
初始C语言(3)
首先了解一些比较常用的操作符就目前而言,这些常用于循环,分支,选择语句中。下面举例一个判断语句下面咱们专门了解几个关键字:一 、typedef通俗讲就是起了个别名二 、static先来了解一下他的作用,static是用来修饰变量和函数的。有三个作用:1 修饰局部变量2 修饰全局变量3 修饰函数下面来分开讲解:修饰局部变量static修饰局部变量的时候改变了局部...原创 2022-03-03 12:06:08 · 171 阅读 · 0 评论 -
初始数组+冒泡排序
数组的定义:一组相同类型元素的集合数组的下标C语言规定:数组的每个元素都有一个下标,下标是从0开始的。 数组可以通过下标来访问的。 数组的使用int n = 10;scanf(“%d”,&n);int arr[n] 当创建数组时,在VS2019编译器中,不支持C99变量数组。在Linux-centos编译器里可以实现。注:C99中引入了变长数组的概念,允许数组的大小用变量来指定。部分编译器不支持数组的创建type_t arr_name [con..原创 2022-03-10 20:21:36 · 272 阅读 · 0 评论 -
初始指针
指针的定义:1. 指针是内存中一个最小单元的编号,也就是地址。2. 平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量。下面流程是传播路径32位虚拟地址空间:CPU—— 32位地址——地址线传输——>内存 (32位地址即位32bit,等于4个字节)64位虚拟地址空间:CPU—— 64位地址——地址线传输——>内存 (64位地址即位64bit,等于8个字节)指针的大小在32位平台是4个字节,在64位平台是8个字节指针变量 我们可以通过&am原创 2022-03-17 16:48:50 · 1095 阅读 · 0 评论 -
* 指针进阶 *
*指针进阶*字符指针:指向字符的指针,存放的是字符变量的地址char *p = "abcdef"printf %c 是输出字母a,因为存储的是字符串首字符的地址。printf %s 是输出整个字符串“abcdef”是常量字符串,不能修改(*p = ‘w’)//err,数组指针: 是指向数组的指针。数组指针类型 int (*)[10] 一个指针存一个地址int* p1 [10] ...原创 2022-03-28 00:52:47 · 1228 阅读 · 1 评论 -
模拟实现库函数&内存函数
C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串中或者字符数组中。 字符串常量 适用于那些对它不做修改的字符串函数.strlen 求字符串长度size_t strlen ( const char * str ); strlen注意事项字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包 含 '\0' )。参数指向的字符串必须要以 '\0' 结束。 若没有 ‘ \0.原创 2022-04-05 20:06:43 · 904 阅读 · 0 评论 -
自定义类型
结构体定义结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。原创 2022-04-09 16:37:08 · 811 阅读 · 0 评论 -
位段 枚举 联合
位段位段的声明和结构是类似的,有两个不同: 1.位段的成员必须是 int、unsigned int 或signed int 。 2.位段的成员名后边有一个冒号和一个数字。struct AA{ int _a; //这个a占四个字节 int _b; int _c; int _d;};AA是结构体类型struct A { int _a:2; //_a这个成员只占2个比特位int _b:5; int _c:10; ...原创 2022-04-09 22:26:45 · 375 阅读 · 0 评论 -
动态内存管理
柔性数组C99 中,结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员struct S1{ int num; double d; int arr[];//柔性数组成员};struct S2{ int num; double d; int arr[0];//柔性数组成员柔性数组的特点结构中的柔性数组成员前面必须至少一个其他成员。 sizeof 返回的这种结构大小不包括柔性数组的内存。 包含柔性数组成员的结...原创 2022-04-16 22:15:24 · 708 阅读 · 0 评论