c语言学习总结
qq_26654257
仰泰山之高,俯江河之远,叹宇宙之无限,悲蟪蛄之春秋,上下求索,终无所得。
展开
-
C语言基础
1.C语言之父:Dennis Ritchie(丹尼斯.里奇)2嵌入式为什么会选择C语言作为开发工具?主要原因是操作系统的内核都是C语言来写的,那么C语言一定有有别于其他高级语言的优点,程序员才会选择C语言编写内核特点(1)C语言兼容性好,有出色的平台移植性,能在多种不同体系的软硬平台运行。 (2)C语言能直接访问硬件,具有简洁紧凑,使用灵活的语法机制。 (3)C语言原创 2016-07-11 10:14:41 · 287 阅读 · 0 评论 -
二级复习12
1一维数组的重要概念: 对a[10]这个数组的讨论。 1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。 2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。 3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列。 对a[3][3]的讨论。 1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。 2、a原创 2016-09-24 19:47:38 · 278 阅读 · 2 评论 -
二级复习10
1 C程序 C语言程序结构有三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和 switch)2 main函数 每个C语言程序中main 函数是有且只有一个。读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。3存储形式 计算机的数据在电脑中是以二进制的形式保存。最低的存储单元是bit(位),位是由为 0 或者1原创 2016-09-22 11:59:14 · 240 阅读 · 0 评论 -
二级复习11
1)三种循环结构:文章2016计算机二级考试C语言知识点总结出自http://www.gkstk.com/article/wk-42072297912419.html,转载请保留此链接! a)for(); while(); do- while()三种。 b)for循环当中必须是两个分号,千万不要忘记。 c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。 d原创 2016-09-23 15:38:15 · 223 阅读 · 0 评论 -
二级c语言复习9
1)合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了。 关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 2)实型数据的合法形式: 2.333e-1 就是转载 2016-09-21 18:05:35 · 195 阅读 · 0 评论 -
二级C语言复习8
1算法的时间复杂度是指执行这个算法所需要的内存空间,包括三个部分:输入数据所占的存储空间;程序本身所占的存储空间;算法执行过程中所需要的额外空间2希尔排序的时间效率与所取得增量排列有关3在树结构中,一个节点所拥有的后件个数称为该结点的度4类-对象的基本特点特点 标识唯一性:一个对象通常可由对象名、属性和操作三部分组成分类性:可以将具有相同属性和操作的对象抽象成类多原创 2016-09-20 21:19:47 · 402 阅读 · 0 评论 -
二级C语言复习7
1队列的顺序存储结构一般采用循环队列结构。2在线性表的链式存储结构中,各数据节点的存储序号是不连续的,并且各节点在存储空间镇南关的位置关系与逻辑关系也不一致。线性链表中数据的插入和删除都不需要移动表中的元素,只需要改变节点的指针域3实体完整性约束要求关系主键中属性值不能为空4软件危机的表现:软件需求的增长的不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度很原创 2016-09-19 16:26:44 · 402 阅读 · 0 评论 -
二级C语言复习6
1算法是指解题方案的准确而完整的描述,算法不等于程序,也不等于计算方法。设计算法不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。2线性结构的满足条件:有且只有一个根节点与每个节点最多有一个前件,也最多有一个后件。循环链表和双向链表都是线性结构。3数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。4自然连接时一种特殊的等值连接,他要求两个关系中进行比较的饭原创 2016-09-18 15:32:14 · 383 阅读 · 0 评论 -
二级C语言复习5
1栈和队列都是线性结点2软件的生命周期指软件产品从提出、实现、使用维护到停止使用退役的过程。3继承是面对对象的方法的一个主要特点,是使用已有的类的定义作为基础建立新类的定义技术。继承是指能直接获得已有的性质和特征,而不必重复定义他们,所以说继承是指类之间共享属性和操作的联系方式。4层次模型的基本结构是树形结构,网状模型是一个不加任何限制的无向图,关系模型采用二维表来表示。划分标准为数据原创 2016-09-17 21:39:04 · 242 阅读 · 0 评论 -
二级C语言复习4
1树是一种非线性结构,而循环队列、带链队列和带链栈都是线性结构。2循环队列的队头指针与队尾指针不是固定的,队头指针可能大于队尾指针,有时也可能小于队尾指针。3算法的空间复杂度是指算法在执行过程中所需要的内存空间。4N-S图提出用方框图来代替传统的程序流程图,PAD图是问题分析图,它是继承程序流程图和方框图之后提出的又一种描述软件详细设计的图形表示工具,E-R图是数据库中的用于表示E-R原创 2016-09-16 18:08:00 · 496 阅读 · 0 评论 -
二级c语言复习3
1栈支持子程序调用。栈是一种只能在一端进行进行插入或删除的线性表,在主程序调用子程序时首先保存主程序状态,在执行子程序,最后把子程序结果返回到主程序中调用子程序的位置。2二叉树性质3:在任意一颗二叉树中,度为0的叶子结点总是比度为2的结点多一个。3软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误。 程序调试的基本步骤:错误定位、修改设计和代码,以排除错误、进行回归测试,防原创 2016-09-15 16:29:21 · 434 阅读 · 0 评论 -
二级C语言复习(2)
1循环队列有队头和队尾指针,但循环队列是线性结构的。队头和队尾指针共同反映队列中元素的动态变化情况。2对长度为n的有序线性表中进行二分查找,最坏情况需要比较o(log2(n))次。顺序查找需要n次。3链式存储结构既可以针对线性结构也可以针对非线性结构,链式结构每个节点由数据域与指针域两部分组成,增加存储结构。4在需求分析阶段可以使用的工具有数据流图(DFD图),数据字典(DD),判定树原创 2016-09-14 16:42:21 · 342 阅读 · 0 评论 -
二级C语言复习(1)
1数据流程图中标有名字的箭头表示数据流,程序流程图中标有名字的箭头表示控制流。2结构化程序设计思想:(1)自顶而下(2)逐步求精(3)模块化(4)限制使用goto语句3软件设计模块应遵循高内聚低耦合、模块大小适当、模块的依赖关系适当的准则4算法的有穷性指的是算法程序的运行时间是有限的。5对长度为n的线性表排序,在最坏情况下,快速排序、冒泡排序、直接插入排序的比较次数为n(n-1)/原创 2016-09-14 16:41:38 · 249 阅读 · 0 评论 -
做个生成和扫描二维码的windows小应用
想做一个视频聊天的程序,因为用到了编码和解码,所以几天一直在自学ffmpeg。无从下手便从最经典的output_examples.c代码看起。着手重写一遍才发现,很多很多API和宏定义都完全不一样了,结合APIChanges 和度娘坑坑洼洼地写了几天快写完了,昨天凌晨手残忘记保存关机了,全没了。不过无所谓了,差不多理解了(强行安慰自己)。在这几天,花了一天时间用qt做了个二维码的小程序,生成二维码原创 2017-11-12 16:48:56 · 1373 阅读 · 1 评论 -
二级C复习13
1)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。有其它元素就错了。并且第一个必须为字母或则是下划线。第一个为数字就错了。关键字不可以作为用户标识符号。main define scanf printf if都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。2)实型数据的合法形式:2.333e0.1 就是合法的,且数据原创 2016-09-25 20:01:49 · 317 阅读 · 0 评论 -
文件的学习1
1文件的打开fopen函数:fp = fopen(文件名,使用文件方式)常见文件使用方式:“r”(只读):为输入打开一个文本文件 “w”(只写):为输出打开一个文本文件 “a”(追加):向文本文件尾添加数据原创 2016-09-26 18:01:21 · 247 阅读 · 0 评论 -
文件学习2
fread函数和fwrite函数fread(buffer,size,count,fp)fwrite(buffer,size,count,fp)fread 和fwrite函数用来读写一个数据块buffer:是一个指针,fread:读入数据的存放位置,fwrite:输出数据的地址size:读写的字节数count:要进行读写多少个size字节的数据项fp:文件指针实例:s原创 2016-09-27 21:29:45 · 156 阅读 · 0 评论 -
输入输出函数和i++与++i的区别
1.atoi函数作用:把字符串转化成数字,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。否则,返回零。范例:#include #include int main(void) { float n原创 2016-07-14 10:13:02 · 515 阅读 · 0 评论 -
运算符和指针
1.比较运算符>(大于) =(大于等于) 常见错误:int num=5; if(num=6) { printf("1"); } else printf("0");这个程序看上去没有问题,连编译都不会出错,但仔细看,会发现原创 2016-07-16 14:32:10 · 228 阅读 · 0 评论 -
数组与指针
1.一维数组 int a[3]={0};a叫做数组首元素的地址(指针常量);&a叫做数组的地址a+1:跳过一个步长&a+1:跳过数组&a:对一维数组名取地址等于数组的地址*(&a)=a:对一维数组的地址取值等于数组首元素的地址*a:对一维数组名取值等于数组首元素的值赋值和形参:整型一维数组:用一个for循环赋值int *p=a;//也可以写成int *p原创 2016-07-21 10:26:51 · 244 阅读 · 0 评论 -
函数
1.指针和数组的区别空间分配:数组是静态分配空间的,而指针是动态分配空间的。效率:数组的效率比指针高传参:传参的过程中一律变为指针安全性:数组易越界,指针有可能成为野指针,从而泄露内存处理方式:数组偏向于值的处理,指针偏向于地址处理指针指向的空间不一定连续,而数组分配的空间一定连续2.内存错误的常见原因(1)内存分配未成功,却使用它(2)内存分配成功,但未初始化原创 2016-07-21 10:27:53 · 200 阅读 · 0 评论 -
关键字和宏
关键字1.register实现原理:register会请求编译器尽可能将变量存在cpu内部寄存器。好处:省去从内存中抓取数据的时间,提高cpu的内存频繁被访问的变量可以设为register变量局限性:(1)register只能修饰局部变量,不能修饰全局变量原因:register修饰的变量只有当前进程知道,其他进程不知道 (2)不能通过&去获取register变量的地址原创 2016-07-29 09:05:54 · 371 阅读 · 0 评论 -
指针与数组的易错点归纳
序:指针与数组是C语言中最常见的,其不同已于前面总结过,今天我写一些我在写C语言程序中遇到的错误,肯定不完整,但也可以作为错误总结防止再犯。在写之前,首先我要总结一点,那就是数组远比指针可靠,除了发送实参和接收形参外,能用数组的尽量不要用指针。首先第一点,指针最容易出现的问题是野指针,即访问了一段非法的地址空间。通常来说,指针必须指向一段你要求指向的空间,而当你只定义一个指针却并未原创 2016-12-02 23:58:46 · 754 阅读 · 0 评论 -
itoa函数的实现
itoa函数在linux中并没有,所以我尝试写了一个my_itoa函数,方便调用。当然由于原有itoa存在进制转化(即第三个参数),我并没有加上,所以默认是十进制,但我将float型转字符串加了进去,功能基本实现,写的可能有点啰嗦,敬请斧正。源码附上#include #include #define MAX_SIZE 1024void my_itoa(int value_int原创 2016-11-30 20:41:01 · 240 阅读 · 0 评论 -
文件练习3
有一个磁盘文件,第一次将他的内容显示在屏幕上,第二次把他复制到另一个文件上#includevoid main(){ FILE *fp1,*fp2; fp1 = fopen("file1.c","r"); fp2 = fopen("file2.c","w"); while(!feof(fp1)) putchar(getc(fp1))原创 2016-10-04 19:34:53 · 236 阅读 · 0 评论 -
文件练习1
题目:在磁盘文件中存有10 个学生的数据,要求将1,3,5,7,9个学生的数据输入计算机,并在屏幕显示出来#include#include struct student_type{ char name[10]; int num;}void main(){ int i; FILE *fp; if((fp = fope原创 2016-10-02 14:48:40 · 514 阅读 · 0 评论 -
文件学习6
ferror函数在调用各种输出函数时,如果出现错误,函数返回值有所反映外,还可以用ferror函数检查ferror(fp)返回值为0,表示未出错;返回一个非零值,表示出错。对同一个文件调用一次该函数,都会产生一个新的ferror函数值,所以要立即检查在执行fopen函数时,ferror函数的初始值自动置为0原创 2016-10-01 21:05:53 · 171 阅读 · 0 评论 -
文件学习5
fseek函数和随机读写fseek(文件类型指针,位移量,起始点)起始点 名字 数字代表文件开始 SEEK_SET 0文件当前位置 SEEK_CUK 1文件末尾 SEEK_END 2fseek函数一般用于二进制文件例子:fseek(fp,100L,0);原创 2016-09-30 16:35:48 · 199 阅读 · 0 评论 -
文件学习4
rewind函数作用:rewind函数的作用是使位置指针重新返回文件的开头,此函数没有返回值#includevoid main(){ FILE * fp1,fp2; fp1 = fopen("file1.c","r"); fp2 = fopen("file2.c","w"); while(!feof(fp1)) p原创 2016-09-29 15:08:34 · 242 阅读 · 0 评论 -
文件学习3
fprinf函数和fscanf函数fprintf(文件指针,格式字符串,输出列表)fscanf(文件指针,格式字符串,输入表列)作用:格式化读写与printf和scanf的区别:读写对象不一样,printf与scanf读写对象是终端,而另一个是磁盘文件putw函数和getw函数作用:用来都磁盘文件读写一个字例如:putw(10,fp);就是将整数10输入到fp所指的原创 2016-09-28 17:16:43 · 152 阅读 · 0 评论 -
音乐播放器中期总结(类似于qq音乐的歌词显示)
在前期总结中,我写了多个类控制一个ui界面,事实无须如此。可以把你想要让ui界面下的某个部分让某个类去做,只需要将ui->widget传进该类的构造函数中即可,然后就可以在这个ui部分上为所欲为了。 示例 /播放控制界面/ pcWidget = new PlayControlWidget(ui->playControl);//这个自定义类,用于播放控制栏界面设计上为所欲为了原创 2017-12-21 23:29:43 · 592 阅读 · 0 评论