
C
文章平均质量分 67
To_dreams
微电子与固体电子学在读
展开
-
【高质量代码实践】【链表】链表的建立,查找,删除,插入和输出
/* copyright(c)2012 三江学院 电子信息工程 * 文件名称:use.c * 文件标识:见配置管理计划书 * 摘要:创建链表,查找结点,删除结点,插入结点,输出链表 * 当前版本:1.1 * 作者:黄路 * 完成日期:2012年6月30日*/ #include "list.h"#include #include原创 2012-06-29 11:14:19 · 935 阅读 · 0 评论 -
【高质量代码实践】【栈】迷宫游戏
/* 三江学院 电子信息工程 文件名:use.c 摘要:经典的迷宫问题,通过数据结构————“栈”和回朔思想,解决迷宫问题。 完成日期:2012-7-1 23:55 作者:黄路 当前版本:1.2 */ #include #include "stack.h" //定义一个迷宫数组,1代表障碍,0代表畅通 int maze[M][N原创 2012-07-02 12:09:25 · 1602 阅读 · 0 评论 -
安全使用assert()函数
assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include assert.h> void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badp转载 2012-06-30 12:38:10 · 1508 阅读 · 0 评论 -
趣谈goto语句
自从提倡结构化设计以来,goto 就成了有争议的语句。首先,由于goto 语句可以灵活跳转,如果不加限制,它的确会破坏结构化设计风格。其次,goto 语句经常带来错误或隐患。它可能跳过了某些对象的构造、变量的初始化、重要的计算等语句,例如: goto state; String s1, s2; // 被goto 跳过 int sum = 0; // 被goto 跳过 ⋯ar state:原创 2012-06-30 11:54:47 · 757 阅读 · 0 评论 -
如何提高函数的质量
摘要: 不同功能的函数其内部实现各不相同,看起来似乎无法就“内部实现”达成一致的观点。但根据经验,我们可以在函数体的“入口处”和“出口处”从严把关,从而提高 函数的质量。 1.在函数体的“入口处”,对参数的有效性进行检查。很多程序错误是由非法参数引起的,我们应该充分理解并正确使用“断言(assert)来防止此类错误。 注意: 在编写函数时,要进行反复的考查,并且自问:“我打算做哪些假定?原创 2012-06-30 11:49:38 · 851 阅读 · 0 评论 -
内存管理
内存分配方式有三种: 1)从静态存储区域分配。 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。 2)在栈上创建。 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 3)从堆上分配,亦称动态内存分配。 程序在运行的原创 2012-07-04 21:59:27 · 756 阅读 · 0 评论 -
验证C语言内存分配
#include #include static int a;//全局静态变量(静态区) char b[2];//全局普通变量(静态区 char *s = "abcdefg";//常量区 void test() { static int c;//局部静态变量(静态区 int d;//局部普通变量(栈区 printf("\nLocal原创 2012-06-05 16:53:12 · 686 阅读 · 0 评论 -
【对比】指针与数组
数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。 指针远比数组灵活,但也更危险。 修改内容 char a[] = “hello”; a[0] = ‘X’; cout << a << endl; char *p = “world”; // 注意p 指向常量字符原创 2012-07-04 22:06:12 · 989 阅读 · 0 评论 -
【深入理解数据结构】二叉树实践
数据结构的本质: 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算。 什么是逻辑结构? 数据之间的逻辑关系,我们通常分成四种: 1)集合 , 结构中的数据元素除了同属于一种类型外,别无其它关系。 2)线性结构 , 结构中的数据元素之间存在一对一的关系。 3)树型结构 , 结构中的数据元素之间存在一对多的关系。 4)图状结构或网状结构 , 结构原创 2012-07-03 11:50:06 · 1225 阅读 · 0 评论 -
【循环链表】约瑟夫死亡游戏
前言:循环链表时一种头尾相接的链表。其特点是无须增加存储量,仅对表的链接方式稍作改变,即可使得表处理更加方便灵活。 如何构成循环单链表? 在单链表中,将终端结点的指针域NULL改为指向表头结点的或开始结点,就得到了单链形式的循环链表,并简单称为单循环链表。 为什么用尾指针表示循环单链表? 在很多实际问题中,表的操作常常是在表的首尾位置上进行,此时头指针表示的单循环链表就显得不够方便.如果改原创 2012-07-01 09:40:07 · 5300 阅读 · 0 评论 -
scanf()
canf()函数的用法 scanf()函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。 其调用格式为: scanf("",); 格式化字符串包括以下三类不同的字符 格式化说明符: 格式化说明符与printf()函数中的格式说明符基本相同。但和printf()函数中格式字符串的用法有一些小区别。我们来看下面这个表。 %d 从键盘输入十进制整原创 2012-05-23 13:46:27 · 902 阅读 · 0 评论 -
如何利用typedef
用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char* PCHAR; // 一般用大写 PCHAR pa, pb; // 可行,同时声明了两个指向字符变量转载 2012-05-21 13:55:41 · 467 阅读 · 0 评论 -
深入剖析Volatile
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序: short flag; vo转载 2012-05-21 13:57:05 · 516 阅读 · 0 评论 -
《电子电气工程师必知必会》
《Electrical Engineering 101—Everything You Should Have Learned in School but Probably Didn’t》 工程师们与人打交道时时常感觉到一个困难就是,没法像我们处理的各种电路那样,用简练的数学公式来描述人与人之间的相互关系......(略去若干文字)我所发现的一个事实是,尽管没有完美的方程可以用翻译 2013-01-11 08:33:46 · 1983 阅读 · 0 评论