C
文章平均质量分 63
白玉豆腐汤
这个作者很懒,什么都没留下…
展开
-
初识-----内存对齐和位域
内存对齐: 首先,先看一段代码: 我们可以看出上面那个结构体的长度为24,按照正常的计算方法,它的长度应该为14,但是现在却是24,这是什么原因呢? 原来在程序运行的过程中为了便于cpu快速访问,同时有效地节省存储空间。c中编译器会自动进行内存对齐。那内存对齐具体的又是什么呢? 结构体数据内存对齐,是指结构体内的...原创 2017-07-24 19:00:06 · 377 阅读 · 0 评论 -
简单实现注释转换(/* */)→(//)
这只是简单实现,将一个正确代码中的注释进行转换,如果代码里面有错误的话,可能会出现问题,比如出现了 /* 但是不出现 */ 如果这时候文件结束了,这样注释转换就会出错,所以转换前,应先保证注释的正确性。(以下情况均是在注释正确的情况下进行)话不多说,进入正题。先分析一波:我们读取一个.c文件时,第一个可能读取到的字符可能有 / 、正常代码、和EOF(文件为空,直接为文件尾...原创 2018-08-06 00:43:02 · 1388 阅读 · 0 评论 -
简易通讯录实现-----------文件操作篇
先分析一波:之前我们已经实现了数组篇和动态数组篇,现在我们需要将每次输入的值在程序结束时存入文件中,等到下一次打开时,只需要将值读出就可以显示以前的记录。在文件操作时,我们需要注意以下几点:文件的加载,需要在初始化阶段完成。文件的存档在退出程序时完成,所以,异常退出可能导致存档失败。文件的函数为void Load_Peoinfo(pContact pcon)和 void Save...原创 2018-08-10 00:39:15 · 406 阅读 · 0 评论 -
数组与指针区别的个人理解
在编程中我们经常会会用到数组与指针,也都知道可以通过指针来访问数组,那这二者又有什么区别呢原创 2018-08-03 12:13:08 · 341 阅读 · 0 评论 -
大小端的测试
首先,我们需要知道什么是大小端: 这是我在百度百科里面找到的关于大小端的介绍,下面我们对大小端做以测试: 我们可以使用联合(union)的方式:#include<stdio.h>union A{ int a; char i;};int main(){ union A a; a.a = 1; if (a.i == 1) ...原创 2018-08-03 12:32:53 · 335 阅读 · 0 评论 -
简单模拟实现函数atoi
先分析一波:atoi的函数原型为:int atoi( const char *str ); atoi函数的作用是:扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。返回转换后的整型数;如果 str 不能转换成 i...原创 2018-08-13 18:35:56 · 266 阅读 · 0 评论 -
C语言常见操作符的个人理解
首先说一下常见的操作符分类:算数操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符逗号表达式下标引用、函数调用和结构成员下面对它们做详细的介绍:算术操作符 + - * / %+ - * 与正常运算相同,在这不做过多介绍。/操作符,如果两个操作数都为整数,那么,执行...原创 2018-08-19 15:53:33 · 220 阅读 · 0 评论 -
自定义类型(struct enum union)的个人理解
本篇是对于c语言中自定义类型 struct enum 和union的个人理解原创 2018-08-21 23:36:56 · 926 阅读 · 0 评论 -
关于指针的几个知识(指针数组、数组指针、函数指针等)
本篇的主要内为:指针数组数组指针函数指针函数指针数组指向函数指针数组的指针指针数组      &am原创 2018-08-29 09:40:12 · 696 阅读 · 0 评论 -
初识线性表之------------静态顺序表
       静态顺序表是借助数组实现的,但与数组原创 2018-09-21 12:19:43 · 342 阅读 · 0 评论 -
用c语言实现简易贪吃蛇
我们用MVC的框架来实现它,即 Model——View——Controller:       Model原创 2018-10-05 22:17:16 · 2445 阅读 · 0 评论 -
简易通讯录实现-----------动态数组(malloc)篇
先分析一波:之前数组篇已经对通讯录进行了整体分析,由于之前是直接创建了一个大小为1000的数组,因此可能会存在空间浪费和存储上限的问题,因此对其升级,将其改造为动态数组版。下面分析需要注意的问题: - 由于是动态数组,所以不会有上限,当空间满时,只需要扩充空间即可。 - 我们可以先动态开辟默认大小合适的空间,等不足时再扩充即可。默认的空间和添加的空间在前面宏定义。 由于之前已经做过分...原创 2018-08-09 23:48:09 · 442 阅读 · 0 评论 -
简易通讯录实现-----------数组篇
先分析思路——无思路必看!:定义PeoInfo 结构体,里面存储的是人的信息,比如姓名,性别,年龄等,之后需要将其定义为数组,因为要存储多个信息。定义整型变量sz,用来记录存储的人信息的个数,因为需要知道到底储存了多少个人的信息。为了方便操作,将上面两个变量进行封装(因为进行操作的同时,可能需要改变sz的值(比如增加,删除),如果不封装,每次传参需要传两个),将它们封装到一个新的结构体C...原创 2018-08-09 22:24:26 · 1210 阅读 · 0 评论 -
宏函数和函数的区别以及优缺点
宏和函数的区别:1. 宏做的是简单的字符串替换(注意是字符串的替换,不是其他类型参数的替换),而函数的参数的传递,参数是有数据类型的,可以是各种各样的类型. 2. 宏的参数替换是不经计算而直接处理的,而函数调用是将实参的值传递给形参,既然说是值,自然是计算得来的. 3. 宏在编译之前进行,即先用宏体替换宏名,然后再编译的,而函数显然是编译之后,在执行时,才调用的.因此,宏占用的是编译的原创 2017-08-05 11:38:11 · 689 阅读 · 0 评论 -
c语言宏定义#define的理解与资料整理
------------------------------------------------------------------------转载自http://blog.csdn.net/xinyuwuxian/article/details/9024961---------------------------------------------------------------------转载 2017-08-06 18:58:06 · 647 阅读 · 0 评论 -
C语言实现——————“学生成绩管理系统”
话不多说,代码附上:#include<stdio.h>#include<stdlib.h>#include<string.h>struct Student{ char num[20]; //学号 char name[20]; //姓...原创 2018-01-17 14:00:03 · 9785 阅读 · 6 评论 -
写一个简单的小游戏 ——五子棋
写一个简单的小游戏 ——五子棋emmmmmmm,这只是一个简单的五子棋,电脑的落子也只是单纯的只用随机数产生,并没有多的逻辑处理,因此,游戏的难点在于让电脑赢,完毕。代码很简单,主要的问题就是判断输入的坐标合法性,修改坐标处的显示,判断游戏的状态(也就是胜利,流局和游戏继续三个的状态),判断方法也很简单,只需要对二维数组遍历就好。话不多说先上图: 选择界面: 游戏界面: 在游戏界...原创 2018-07-01 13:12:33 · 1448 阅读 · 2 评论 -
对函数调用过程以及栈帧创建与销毁的个人理解
&amp;amp;amp;amp;nbsp;开始之前需要对汇编语言中的一些指令进行解释:esp &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp;栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。ebp &amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp;基址指针寄存器(原创 2018-07-28 19:56:31 · 236 阅读 · 0 评论 -
数组的个人理解
数组的个人理解:文章内容主要是对一维数组和二维数组的介绍一维数组:一维数组的创建和初始化: 一维数组的创建方式:type_t arr_name [const_n];//type_t ࣳ是指数组的元素类型 //const_n 是一个常量表达式,表示数组的大小。//例子1int arr[10];//由于数组是由0,所以数组创建后可使用的最大单元为c...原创 2018-07-25 22:56:39 · 363 阅读 · 0 评论 -
初识-----可变参数列表
首先,我们需要知道可变参数列表到底是什么,它又有什么作用?一般我们在编程的时候,函数中形参的个数通常是确定的,在调用时要依次给出与形参对应的实参。但在某些情况下我们希望函数的参数个数可以根据需要确定,因此c语言引入可变参数函数。因此,它的一个很重要的作用就是我们可以根据需要来确定形参个数,而不用多次定义不同的函数来调用。对于可变参数列表,我们首先需要了解一些编程中会用到的东西。首先...原创 2017-08-03 12:21:40 · 362 阅读 · 0 评论 -
可变参数列表的个人理解
话不多说,直入主题:我们先写一段代码://这是通过可变参数列表实现求n个数的平均值#include&amp;amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;amp;gt;#include&amp;amp;amp;amp;amp;lt;stdarg.h&amp;amp;amp;amp;amp;gt;int average(int n, ...){ int i = 0; va原创 2018-07-29 11:08:34 · 299 阅读 · 0 评论 -
简单实现扫雷游戏!
本来是为了模拟实现扫雷的,但由于技术不进,做出来的扫雷与电脑上的扫雷之间还有很大差异。原创 2018-07-30 00:42:26 · 687 阅读 · 0 评论 -
函数调用过程中栈帧的创建与销毁
开始之前需要对汇编语言中的一些指令进行解释:esp 栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。ebp 基址指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。mov 将“,”后面的 地址赋给“,”前面的。push ...原创 2017-07-17 15:27:44 · 441 阅读 · 0 评论