C语言
文章平均质量分 73
C语言基础
kafm
哼
展开
-
C stdarg.h:可变参数va_list、va_arg等宏的使用及原理简介
va_list、va_arg宏及 …的使用va_list 可变参数宏,同标识符…相同,用于传递可变参数当函数需要传递的参数个数不能确定时,如 printf,使用…声明接下来的多个参数,在函数实现中使用va_list、va_arg等宏取出参数使用具体使用方法如下void func(type first_arg, ...){ va_list argptr;//声明参数列表指针 va_st...原创 2019-12-07 12:42:04 · 1076 阅读 · 0 评论 -
结构体、位域、栈的字节对齐
为什么要字节对齐可移植性:不是所有硬件都能从任意地址开始访问数据,如 MIPS 遇到未对齐内存直接报错效率:CPU 每次读取内存时是一块一块读取的,如果目标数据跨越了两个块,CPU 要把两个块都读进来,去掉无关字节,然后将两个块中的目标数据拼接起来,大大降低了 CPU 的效率结构体/联合体中的字节对齐结构体内的第一个成员的偏移量为0,此后每个成员的偏移量为 min(#pargma pac...原创 2019-12-22 17:35:50 · 661 阅读 · 0 评论 -
用位运算实现四则运算
四则运算的位运算实现以C语言为例由位运算实现四则运算12+89=101将上述加法运算分解为如下过程步骤1:不考虑进位的运算 12+88 = 01,转到步骤2步骤2:仅考虑进位的运算 12+88 = 100,转到步骤3步骤3:如果仅考虑进位的运算结果不为0,将两次运算的结果作为加数,重复步骤1以二进制考虑0000 1100 + 0101 1001 = 0110 0101不考虑进位...原创 2019-04-14 20:15:31 · 743 阅读 · 2 评论 -
指针:C语言二级指针与二维数组
前言 最近用C语言写LeetCode 有的题目给的函数把二维数组用二级指针传进来 并传入行数和列数 引起一些疑惑本来以为C语言学得海星,查了一些资料后,觉得自己还是个弟弟 : (按一维数组的思路处理二维数组,将二维数组名作为二级指针传入出现异常(图示运行在DEVC++中)二维数组名+1相当于在行上+1然而传入的二级指针按二维指针指针传入的num失去了二维数组的性......原创 2019-04-09 21:25:59 · 6059 阅读 · 5 评论 -
C/C++、Java中main函数参数的使用
main函数参数的使用在C系ProgramLanguage中main函数是程序的入口。 我们晓得在cmd中,在可执行文件的路径下直接输入文件名可以直接运行该文件。在使用一些其他程序如gcc时也是,不过我们要传入参数,比如-o、文件名等,那么我们作为命令输入的参数是如何传递给程序使用的呢。答案就是main函数的argc、args参数。也就是说可以实现命令式的效果 有一个解决A+B pro...原创 2018-12-31 22:25:42 · 536 阅读 · 0 评论 -
树:哈夫曼编码解码及压缩存储
哈夫曼树哈夫曼树即最优二叉树,算法如下:(1)在当前未使用结点中找出两个权重最小的作为左右孩子,计算出新的根结点(2)新的根结点继续参与过程(1),直至所有结点连接为一棵树如下图,symbol为具体字符,Frequency为出现频率(权重)特点:只有度数为0和2的结点C语言静态链表实现哈夫曼树实现功能:输入一段英文文本,统计各字符出现次数作为权重,以当前字符集生成哈夫曼树,给出...原创 2018-11-19 19:37:45 · 2151 阅读 · 3 评论 -
C语言文本文件实现局部修改
前言:以往进行文件操作时,都是以链表(变量)作为用户所见数据与文件数据之间的桥梁。用户改变数据时,先改变链表(变量)中的数据,然后直接将整个链表重新写入文件,以做到“实时同步”,非正常退出程序一般数据也不会丢失。但是数据量很大时,微小的改动就要重写整个文件,浪费很多计算资源。但是在控制台程序中,没有C语言做不到的事,只有C语言不擅长的事。下面介绍一下文本文件的局部修改(覆盖写入)。当然,不进行覆盖...原创 2018-06-17 13:23:59 · 49068 阅读 · 27 评论 -
C语言 数的阶乘、高次幂、大数加法及大数乘法
大数加法基本思路:将数字倒序放入数组中处理,这样从头到尾符合计算顺序,进位方便,并且不用考虑对齐。其余同普通加法过程。输出时倒序输出。 代码如下:#include<stdio.h>#include &原创 2018-05-24 23:31:59 · 1864 阅读 · 3 评论 -
C语言获取系统时间及time.h函数使用指南
C语言获取系统日期及时间(time.h的应用)以下内容基于C/C++语言参考手册的整理与补充 系统时间的获取time()函数 在头文件time.h中time_t time( time_t *time );//返回值为time_t 类型函数返回当前时间(sec),从1970年1月1日至此时经历的秒数。如果发生错误返回零。如果给定参数time ,那么当前时间存储到...原创 2018-04-29 15:27:02 · 13871 阅读 · 2 评论 -
C语言实现字符界面下的学生管理成绩系统
源码在此本系统学生信息由链表存储,账号由结构体数组存储,在程序开始时从文件中读入所有信息。如有信息变动即时保存到文件。文件为文本文件。再分为管理员端,教师端,学生端进行功能区分与权限管理。不足之处:仅仅区分了班级未区分专业 本系统不能直接注册账号,注册信息存到文件,管理员可见。未注册时仅可进行申诉各端主要功能 学生端 教师端 管理员端 成绩查询及分析 ...原创 2018-05-07 16:16:51 · 1972 阅读 · 0 评论 -
C语言下的位运算
简介程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算是直接对整数的二进制位进行操作。 下表列出了C语言的位运算符 名称 运算符 含义 按位与 a & b 仅1 & 1 == 1 按位或 a | b 仅0 | 0==0 按位异或 a ^ b 对应数位上的数相同为0,不同为1 按位取反 ...原创 2018-05-20 13:47:07 · 241 阅读 · 0 评论 -
enum:枚举类型介绍与简单使用
enum类型的定义及变量声明编程中有时会遇到这样的应用场景:我们定义的变量被用作标记某种状态,它只有几种固定的取值。这种情况下我们可以把它定义成枚举类型enum emotion{ depression,//0 angry,//1 sad,//2 exciting,//3 happy//4};//注意以分号结束多种方式定义枚举变量enum e...原创 2018-05-13 11:48:34 · 305 阅读 · 0 评论 -
链表:单向链表的理解,创建及基本操作
链表的创建typedef struct info{ int data; struct info *next;}node;int main(){ node *head=NULL;}//这是一个空链表,head是它的开头,然而现在什么都没有 我们得到这样的数据类型:该类型包含数据(data)和指针next两部分,指针指向下一个相同的结构体. 链表的...原创 2018-04-21 11:23:00 · 434 阅读 · 0 评论 -
scanf( )与正则表达式
scanf( )的用法scnaf()从stdin(标准输入)读取,包含在头文件stdio.h中,与此类似的有 fscanf() 指定输入流 sscanf() 指定缓存区 scnaf()的用法 (1)scanf()函数根据由format(格式)指定的格式从stdin(标准输入)读取,并保存数据到其它参数. format(格式)字符串由控制字符,空白字符和非空...原创 2018-04-15 17:52:04 · 5734 阅读 · 1 评论