语言学习篇:C/C++
文章平均质量分 84
fovwin
Master
展开
-
C语言相关的经典书籍(附Ebook)
个人稍微分了一下类,有的看过,有的听人“传说过”,欢迎大家补充和共同学习。大致分为以下几类:真心经典|底层相关|指针相关|数据结构|补充进阶|标准参考|编程规范|国内不错原创 2013-07-03 22:10:59 · 14121 阅读 · 25 评论 -
C语言中的"NULL"到底是什么?又不是什么?有什么用?怎么用?
这个问题其实困扰我很久了,我问很多人"NULL"是什么?有啥用?大多数人的回答是:"NULL就是系统定义特殊的0,把你初始化的指针指向它,可以防止“野指针”的恶果。"今天碰到一个C语言的笔试题,还是一道不错的题~~~Exp 1:#include void fun(int *node){ static int N=100; node=&N;}int ma原创 2012-10-10 20:29:30 · 91306 阅读 · 16 评论 -
给千篇一律的注释加点料(ASCII ART)
一些有趣的ASCII注释图案,可以给代码来点料。有:公告栏小孩,钢琴,小蝙蝠,大蝙蝠,水族馆,骑士,当然还有我们的tux。O(∩_∩)O~原创 2013-07-13 16:44:19 · 1339 阅读 · 0 评论 -
关于大小端的一些问题
这名字咋来得?到底如何工作?那么到底是谁在决定是使用Big-endian,还是Little-endian?检测方法呢?原创 2013-07-09 22:54:18 · 3442 阅读 · 0 评论 -
开发人员眼中最好的代码编辑器
英文原文:Which is the Best Code Editor?,翻译:gbin1如果我们把不同的程序开发人员比作三国演义中的各路诸侯大将的话,那么代码编辑器绝对可以称之我们手中的神兵利器,不同类型的开发人员使用的”兵器“也大有不同。好比兵器来说,没有绝对强的,也没有绝对好的,每一中兵器都有不同的优点和缺点,虽说俗话说的好,一寸长,一寸强,不过如果你没事去那都提着“关老爷”的“青龙偃转载 2013-06-06 22:39:29 · 2256 阅读 · 2 评论 -
函数指针数组
话说可以通过指针的形式操作数组,只是人们的思维比较喜欢数组形式,所以才诞生了[],也就是说数组其实是可以不需要的。比如下面这个代码: C++ Code 123456789101112131415161718#include "stdio.h"#includ原创 2013-06-06 20:32:12 · 983 阅读 · 0 评论 -
Sublime Text 2 快捷键
文件 File新建文件Ctrl + N打开文件Ctrl + O打开最近关闭的文件Ctrl + Shift + T保存Ctrl + S另存为…Ctrl + Shift + S关闭文件Ctrl + W新建窗口Ctrl + Shift + N关闭窗口Ct转载 2013-06-15 19:10:25 · 38900 阅读 · 4 评论 -
C/C++编译器错误代码大全
编译器错误 C2001 错误消息 常数中有换行符 字符串常数不能继续到第二行,除非进行下列操作: •用反斜杠结束第一行。 •用一个双引号结束第一行上的字符串,并在下一行用另一个双引号转载 2013-06-13 20:35:35 · 2966 阅读 · 0 评论 -
部署Google Code的SVN代码托管环境——VS2008+CollabNet+TortoiseSVN
一直对开源世界好奇,遂尝试向此迈出一小步~~~go~~~因为人们将自己的开源代码交给代码托管的公司托管,然后大家都可以参与进来。代码托管目前大致晓得的有以下一些:Github Google Code Sourceforge Gitlab作为新手哪个最简单用哪个,以后有需要的时候再转吧,再说转的成本也不高,刚好有Google账号,就用GC了。Step 0.登陆Google账号,进入c原创 2013-06-28 23:05:12 · 1957 阅读 · 0 评论 -
思科笔试-嵌入式底层C
1. 用宏定义写出swap(x,y)(考宏的使用吧,嵌入式系统中宏的使用还是很多的,特别是对I/O口的命名时,有时还是有点小复杂)#include "stdio.h"#define SWAP1(x,y) {x=x+y;y=x-y;x=x-y;}#define SWAP2(x,y) {x^=y^=x^=y;}#define SWAP3(t,x,y){t temp;temp=x;x=y;原创 2012-10-22 22:05:35 · 2404 阅读 · 1 评论 -
想成为嵌入式程序员应知道的0x10个基本问题
C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。 从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这个愚蠢的问题吗?如要你答出某个字符转载 2012-10-19 19:05:25 · 1293 阅读 · 0 评论 -
Sublime Text 2 for C/C++ and Python in Windows
Step 1. 安装Python开发环境,DEV-CPP,Sublime Text 2Step 2. 修改环境变量中的Path增加类似如下路径:D:\Program Files\Python33\;D:\Dev-Cpp\bin Step3. 修改Sublime Text 2中的Tools->Build System->New Build System原创 2013-06-01 13:26:39 · 1830 阅读 · 0 评论 -
如何特意制造栈缓冲区溢出?(x86 & ARM)
在x86(visual studio 2008)和ARM(MDK4.70)下有意的构造使栈缓冲区溢出的代码,看看他是如何溢出的,以及发生什么现象。这样碰到类似的事就可以有经验了。晓得咋个回事了。原创 2013-09-07 09:16:00 · 3586 阅读 · 1 评论 -
STM32之启动文件详细解析(V3.5.0)
启动文件么,就是进入main函数(其实可以在本文件中改成别的,即替换"_main"为你想改的"_XXXX"即可)之前干的一些事~~~来看看ARM在进入的“领域”之前都为你做了哪些工作~~~;* 文件名 : startup_stm32f10x_hd.s;* 库版本 : V3.5.0;* 说明: 此文件为STM32F10x高转载 2012-11-11 21:51:40 · 6430 阅读 · 1 评论 -
分析TCP/IP协议栈代码之ARP(STM32平台)
ARP部分IP&ICMP部分UDP部分TCP部分1. ARP的简介Address Resolution Protocol-地址解析协议ARP为IP地址到对应的硬件地址之间提供动态映射。从逻辑Internet地址到对应的物理硬件地址需要进行翻译。这就是ARP的功能。ARP的功能是在32 bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射。原创 2013-04-19 22:15:27 · 4810 阅读 · 0 评论 -
STM32学习笔记——GPIO之从库函数到寄存器
例子为单片机的“Hello World”级的流水灯实验——虽然只有一个,其中并不是将完整的代码给出,只是给出关键部分来说明“如何调用ST公司的的库来完成对硬件的控制,以及对库文件代码进行跟踪和分析至寄存器级”。所以从第一段代码往下看就可以了,要用到的函数和变量大部分会说明,至于寄存器级的,那就只能翻手册了。GPIO(General Purpose Input/Output) - 通用输原创 2013-04-16 20:09:11 · 35680 阅读 · 9 评论 -
分析TCP/IP协议栈代码之IP & ICMP(STM32平台)
ARP部分IP&ICMP部分UDP部分TCP部分1. IP介绍IP是TCP/IP协议族中最为核心的协议。大家,如TCP、UDP、ICMP及IGMP数据,都是在IP数据报格式基础上再封装一层再来传输的(见图1 - 4)。不可靠(unreliable)的意思是它不能保证 IP数据报能成功地到达目的地。 IP仅提供最好的传输服务。如果发生某种错误时,如某个原创 2013-04-22 22:46:26 · 5706 阅读 · 0 评论 -
面试题——嵌入式软件开发(1)
1. 什么是预编译,何时需要预编译:答案:1、总是使用不经常改动的大型代码体。(好工程的回答,不是么~~~:))2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。2. char * const p char const * p const char *p 上述三个有什么区别?原创 2012-10-18 12:58:45 · 1219 阅读 · 1 评论 -
思科——嵌入式软件开发(Embedded Softare Developer)要求
Prepare for next year~~~1. Embedded Software Developer-CABU-Shanghai工作类型:全职工作地点:上海薪资待遇:面议所属职类:技术研发招聘人数:若干所属部门:---发布日期:转载 2012-10-18 21:38:58 · 2260 阅读 · 1 评论 -
“斐波那契查找”真的比“二分查找”快么?
Is Fibonacci Search really "faster" than Binary Search?申明:本文讨论的搜索对象为有序数组,不是数学上讨论的函数。1. 介绍对经过各种Sort算法排好序之后的有序数组进行检索的Search算法大致有以下三种:线性查找 O(n),二分查找 O(log(n)),斐波那契查找 O(log(n))。前两者用的比较多,原创 2013-06-11 22:20:17 · 8014 阅读 · 4 评论 -
C语言中类型限定符(qualifier)之一const
C语言中连个类型限定符:const和volatile。用来对以下的类型说明符进行限定:void ,char ,short ,int ,long ,float ,double ,signed ,unsigned ,结构或联合,说明符,枚举说明符,类型定义名。“类型限定符可与任何类型说明符一起使用。可以对const 对象进行初始化,但在初始化以后不能进行赋值。”《C程序语言设计(第2版原创 2013-05-26 22:07:31 · 3618 阅读 · 0 评论 -
AStyle2.02在VS2008下的使用
AStyle(全称Artistic Style)是一个C、C++、C#和Java源代码缩进、格式化和美化工具。官方下载是命令行版程序,可以整合到开发IDE环境中去使用,甚至也可以整合到Notepad++之类的编辑器中。官方地址:http://astyle.sourceforge.net/本地下载:http://download.csdn.net/source/3323725转载 2013-03-31 12:46:48 · 1059 阅读 · 0 评论 -
程序书写规范(简约版)
程序书写规范目录1 总述2 缩进3 代码宽度4 代码格式4.1 if-else语句4.2 switch-case语句4.3 while语句,do语句与for语句4.4 空格的添加4.5 长语句的换行方式4.6 其他5 注释5.1 总述5.2 文件头部注释5.3 函数头部注释5.4 代码分隔注释5.5 代码块末尾注释6 命名规则6.1 工程名6.2转载 2012-12-30 15:14:29 · 1673 阅读 · 1 评论 -
How do I trim leading/trailing whitespace in a standard way?
http://stackoverflow.com/questions/122616/how-do-i-trim-leading-trailing-whitespace-in-a-standard-way关于去除字符串的頭尾的空格键(思路可以扩展到其他的符号)。分为两种情况,1. 第一种为可以对此字符串改变的,如字符数组,堆中(calloc和malloc)分配的空间,还有一些buffer翻译 2012-12-30 21:35:39 · 947 阅读 · 1 评论 -
关于free如何知道要释放内存空间的长度问题(ARM篇)
有X86的前提,不废话了,直接上测试代码主要部分~~~~ char *test_c1=(char *)malloc(Num); *test_c1='h'; //'h'=0x68 *(test_c1+1)='o'; //'o'=0x6f *(test_c1+2)='o'; *(test_c1+3)='o';原创 2012-12-30 15:06:08 · 1710 阅读 · 0 评论 -
关于用malloc函数申请0字节内存的进一步讨论——《C语言深度解剖》笔记
环境:vs2008关于malloc和free: malloc两次,free一次会内存泄漏,当时无现象,但机子会越来越慢;malloc一次、free两次肯定会出错。如下:另外,对NULL可无数次的free。至于为什么,我认为free对于NULL无意义,所以free不free无所谓。如果让我来设计free函数,也这样设计,让那些蛋疼的人去纠结这样的问题,⊙﹏⊙b原创 2012-11-11 12:43:52 · 7584 阅读 · 1 评论 -
关与对《C语言深度解剖》函数指针的进一步探讨
在《C语言深度解剖》中的4.7.2一节——函数指针的使用中有一个例子~~~有代码,有真相~~~#include #include char * fun(char *p1,char *p2){ int i=0; i=strcmp(p1,p2); if(i==0) { return p1; } else原创 2012-11-02 21:21:39 · 1561 阅读 · 2 评论 -
【C语言:丹尼斯·里奇的不朽遗产 】
有一次有人问丹尼斯:一个程序员从新手成长为精通C语言的开发者,并能写出不凡的代码,据您的经验需要多长时间?丹尼斯答道:我不知道,因为我不需要学C语言。 “软件”一词几乎人人都有所耳闻,但几乎没人真正了解软件的含义、功用和数量。我在哥伦比亚大学讲授计算机科学基础课时,我问学生这样一个问题作为开场白:当今世界在役的软件有多少套?工业界、政府机构、学术界和整个社会使用的所有的软件系统在转载 2012-10-25 20:18:40 · 2041 阅读 · 0 评论 -
三种实现交换的方法,其中一个诡异的swap函数——C/C++语言(问题求助)
直接上代码#include using namespace std;void swap(int *a,int *b){ *a ^= *b ^= *a ^= *b;}void swap1(int *a,int *b){ int temp; temp=*a; *a=*b; *b=temp;}void swap2(int *a,int *b){ *a+=*原创 2012-10-16 22:10:34 · 1539 阅读 · 1 评论 -
xx年xx月xx日xx时xx分xx秒——if版本
if版本,貌似差不多,但是比switch要简洁点~~~都要那么多次的判断~~~/*** 编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。* 注意考虑润年。* 如输入2004年12月31日23时59分58秒,则输出2004年12月31日59时59分59秒。* 如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。**/#inclu原创 2012-10-11 20:33:06 · 3202 阅读 · 1 评论 -
十个优秀的C语言学习资源推荐
学习C语言,需要一点一滴,沉下心来,找个安静的地方,泡上一杯咖啡,在浓郁的香味中一起品味她。-- Boatman Yang人们通常认为计算机编程很烦,但是有些人却从中发现了乐趣。每一个程序员不得不跟随计算机编程语言的潮流。大多数的人以C语言作为开始编程的语言,因为C语言是在编写操作系统和应用程序中用的最为普遍的语言。如果你正在读这篇文章,很有可能你已经是一个编程人员或者想成为一名编转载 2013-04-03 17:33:47 · 2291 阅读 · 0 评论 -
C语言实现队循FIFO缓冲区-《30天自制操作系统》
本代码整理自《30天自制操作系统》P135的整理FIFO缓冲区写的很好,所以记录一下(增加了一个fifo8_free函数,用于查询剩余容量,觉得有用)。作者实现的是char类型的缓冲区,但是可以用你要传的任意结构体来替换~~~fifo8.h/*溢出标志:0-正常,-1-溢出*/#define FLAGS_OVERRUN 0x0001/* buf- 缓冲区地址转载 2012-10-30 16:51:24 · 17149 阅读 · 4 评论 -
[直观学习排序算法] 视觉直观感受若干常用排序算法
1 快速排序介绍: 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需转载 2013-05-19 00:03:14 · 743 阅读 · 0 评论 -
思科与华为十年战争:优势正失 前景蒙阴影
华为在美国的竞争对手很多,但在长达58页的美国众议院常设特别情报委员会调查报告中,唯一出现的对手就是思科。此报告提到思科是因为“有证据显示,华为漠视美国公司和实体的知识产权”。至此,这份报告中所有关于“国家安全”、“华为身份”等指责终于落到了实处,华为被美国以安全名义拒之门外,还是因为多年前与思科的知识产权纠纷。 据《华盛顿邮报》报道,该报从一名熟悉思科销售策略的人士手中,获得了2转载 2012-10-21 23:23:01 · 2824 阅读 · 1 评论 -
编程技术面试的五大要点
文 / 何海涛扎实的基础知识、高质量的代码、清晰的思路、优化代码的能力、优秀的综合能力是编程技术面试的五大要点。找工作一直是一个热门话题。要想找到心仪的工作,难免需要经过多轮面试。编程面试是程序员面试过程中最为重要的一个环节。如果能在编程面试的环节充分展示自己的能力,那么拿到中意的Offer就是水到渠成的事情。我先后在欧特克、微软和思科等公司任软件工程师,多次接受他人的面试转载 2013-01-07 22:08:46 · 770 阅读 · 0 评论 -
C语言的对象化模型(RT-Thread)
( What's RT-Thread? )面向对象的特征主要包括: • 封装,隐藏内部实现• 继承,复用现有代码• 多态,改写对象行为采用C语言实现的关键是如何运用C语言本身的特性来实现上述面向对象的特征。封装 封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用原创 2013-01-01 20:02:45 · 3250 阅读 · 0 评论 -
关于free如何知道要释放内存空间的长度问题(X86篇)
在学内存分配的问题的时候,malloc和calloc都要指定需要分配内存的大小,但是free的就不需要,我就纳闷free是咋知道从指针地址开始的多少长度是被分配了的?当时就想,在malloc或者calloc的时候,编译器应该把大小的数值放到哪个地方了,当free的时候就去找那个数值,释放掉数值大小的堆空间。但是到底放哪呢?前几天在网上一阵乱逛,说是现代编译器就是把大小的数值放在分配原创 2012-12-08 16:09:24 · 4929 阅读 · 0 评论 -
C语言区间随机数生成 with srand() & rand() & time()
在用计算机的一些智能算法(GA,PSO,ANN etc.)仿真时经常需要随机生成初始种群(初始样本),看看中的这两个函数的伪随机数生成吧~~~1. 生成[a,b]之间的一个实数和一个整数/*定义函数 int rand(void);函数说明 rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随原创 2012-10-21 22:09:30 · 5185 阅读 · 1 评论 -
C语言实现基本PSO算法
介绍看此文:http://blog.csdn.net/fovwin/article/details/8069606粒子群算法的流程图如上,看了好多版本,这个最靠谱,我的main函数完全按照这个来,好理解过程:int main(int argc, const char *argv[]){ int n=0; //printf("Random Initialization of原创 2012-11-04 22:14:30 · 7481 阅读 · 10 评论 -
C语言实现标准PSO算法
简介以及基本PSO的实现:http://blog.csdn.net/fovwin/article/category/1256709相对于基本PSO,标准PSO加入了惯性权重系数W,W代表者粒子群对全局空间的搜索能力和局部收敛速度的权衡。也就是说,若惯性权重W越大,速度更新式子的第一项所占的比重,即速度惯性项,比较大。粒子就会比较不受约束,可以冲来冲去。不受世俗的约束,也就不容易变“俗”(陷原创 2012-11-06 18:48:40 · 7454 阅读 · 15 评论