
c/c++语言
tsinfeng
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
高级串口编程, 使用 ioctl 和 select
高级串口编程, 使用 ioctl 和 select 分类: LINUXChapter 4, Advanced Serial Programming第四章,高级串口编程This chapter covers advanced serial programming techniques using the ioctl(2) and select(2) system转载 2015-02-16 10:01:36 · 9850 阅读 · 0 评论 -
字符串转化为大写及翻转
<br />// StringTran.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include<iostream>#include<string>using namespace std;char* tran(char str[]){ int i=0; while(str[i]!='/0') { if(str[i]>='a'&&str[i]<='原创 2010-10-20 21:32:00 · 834 阅读 · 0 评论 -
两个long整型相乘
<br />#include<iostream>#include<iomanip>#include<vector>#include<string>#include<fstream>using namespace std;//ofstream fout("result.txt");void bigNumMul(long int x,long int y){ int a[64]={0}; int b[64]={0}; int c[64]={0}; long原创 2010-10-13 22:04:00 · 6460 阅读 · 0 评论 -
指针数组与数组指针
--------------指针----------------int a=10;int *p=&a;-------------指针的指针-----------int b=20;int *p=&b;原创 2010-10-13 21:29:00 · 568 阅读 · 1 评论 -
遍历二叉树
前序遍历:先访问根节点,再访问左子树,最后访问右子树。设置一个栈,出栈即为访问节点。先将根节点进栈,在栈不空时一直如下循环:出栈,访问,将其右孩子进栈,再将左孩子进栈。中序遍历:先访问左子树,再访问根节点,最后访问右子树。设置一个栈,出栈即为访问节点。先将根节点的左节点全部进栈,然后出栈一个节点,访问。将该节点的右孩子节点进栈,再将右孩子节点的所有左节点全部进栈...如此这般直到栈空为止。后序遍历:先访问左子树,再访问右子树,最后访问根节点。设置一个栈。先将根节点的左节点全部进栈。出栈一个节转载 2010-10-12 15:48:00 · 525 阅读 · 0 评论 -
C++标准库头文件介绍
C++标准库头文件介绍 C++标准库的所有头文件都没有扩展名。C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能。 形式的标准头文件【 例外】其内容与ISO标准C包含的name.h头文件相同,但容纳了C++扩展的功能。在 形式标准的头文件中,与宏相关的名称在全局作用域中定义,其他名称在std命名空间中声明。在C++中还可以使用name.h 形式的标准C库头文件名。C++标准库的内容分为10类:C1.语言支持 C2.输入/输出 C3.诊断 C4.一般工具 C5转载 2010-10-09 20:02:00 · 490 阅读 · 0 评论 -
函数模板与类模板
函数模板:是用来产生函数的模板,而产生的函数叫做模板函数类模板:是用来产生类的模板,而产生的类叫模板类有下列函数max(int a,int b),max(float a,float b),max(double a,double b)如果用函数重载,你不得不写三个重载函数而从软件的复用及简洁来说,这是让人沮丧的。而有了模块,一切从简了上面的三个函数可以用以下的函数模块来写template T max(T a, T b){ return a>b?a:b;}关于类模原创 2010-10-05 11:09:00 · 653 阅读 · 0 评论 -
运算符重载
C++允许类的对象的构造运算符实现单目或双目运算,这个特性叫做运算符重载.对于每一个运算符,在C++都对应一个运算符函数operator@(@为C++各种运算符)type operate@(arglist)其中type为运算结果类型,arglist为操作数列表不同情况下而不同运算符重载在定义对象间的相互赋值时,重载运算符在数字类型增加算术属性时,重载算术运算符在定义的对象进行逻辑比较时,重载关系运算符对于容器(container),重载">"运算符。实现smart指针,重载指针运算符"->"少数情况下重载n原创 2010-09-30 11:18:00 · 555 阅读 · 0 评论 -
STL(Standard Template Library)适配容器
<br />stack适配器,它可以将任意类型的序列容器转化为一个堆栈,一般使用deque作为支持的序列容器<br />queue适配器,它可以将任意类型的序列容器转化为一个队列,一般使用deque作为支持的序列容器<br />priority_queue适配器,它可以将任意类型的序列容器转化为一个队列,一般使用vector作为底层存储方式<br /> <br />以适配器stack,queue的使用为例<br />// StackQueue.cpp : Defines the entry poin原创 2010-10-05 12:12:00 · 678 阅读 · 0 评论 -
判断两字符串相同不同的字符个数
<br />#include<iostream><br />#include<string><br />#include<fstream><br />#include<ctime><br />using namespace std;<br />int a[26]={0};<br />int getLength(char *p)<br />{<br /> int i=0;<br /> while(*p!='/0')<br /> {<br />原创 2010-09-23 15:22:00 · 3178 阅读 · 0 评论 -
Vector,List及Deque
<br />#include <iostream><br />#pragma warning (disable: 4786)<br />#include <vector><br />#include<string><br />#include<list><br />#include<deque><br /><br />using namespace std;<br /><br />int main()<br />{<br /> <br /> vecto原创 2010-09-23 15:31:00 · 542 阅读 · 0 评论 -
swap交换
<br />#include<iostream><br /><br />using namespace std;<br /><br />void swap1(int &a,int &b)<br />{<br /> int temp;<br /> temp=a;<br /> a=b;<br /> b=temp;<br />}<br />void swap2(int &a,int &b)<br />{<br /> a=a+b;<br />原创 2010-09-04 15:29:00 · 828 阅读 · 0 评论 -
extern声明
在1.h头文件中声明两变量extern int a;extern int b;如果想定义,可直接赋值extern int a=1;extern int b=2;也可以在cpp文件中定义a,bint a=1;int b=2;如果引用这两个全局变量,必须在主函数的cpp文件中引用1.h,如a=8;b=10;则重写这两个值如果再写int a=8;int b=10;刚a,b为局部变量,覆盖那两个值引用初如值可int a=::a;int b=原创 2010-10-21 16:33:00 · 657 阅读 · 0 评论 -
链表操作
1.生成指针链表2.对链表行翻转3.输出链表具体代码如下:// reverseLink.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#includetypedef struct Node{ int data; Node* next;}*LinkList;//链表结构定义void ListPrint(Node* l)//输出链表原创 2010-10-23 09:05:00 · 475 阅读 · 0 评论 -
Linux 信号signal处理机制
Posted on 2007-08-30 1 信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进转载 2014-05-07 17:21:28 · 594 阅读 · 0 评论 -
在C语言中模拟含有默认参数的函数
在C语言中模拟含有默认参数的函数nonoob write写C++代码的时候总想当然以为C中也有含默认参数的函数这种玩意儿(值得注意的是Java也不支持而C#支持,Scala这种奇葩支持是不足为奇的),然后在编译下面这段代码之后颜面扫尽TwT?default_args.c123456789#inclu转载 2014-03-04 19:11:38 · 4520 阅读 · 0 评论 -
Linux core dump详解
有的程序可以通过编译,但在运行时会出现Segment fault(段错误).这通常都是指针错误引起的.以下是我们详细的对Linux core dump的调试技术进行的介绍:1.Linux core dump前言:有的程序可以通过编译,但在运行时会出现Segment fault(段错误).这通常都是指针错误引起的转载 2014-02-27 10:03:26 · 770 阅读 · 0 评论 -
Baby's First Garbage Collector
Baby's First Garbage Collector December 08, 2013 —c, code, languageWhen I get stressed out and have too much to do, I have this paradoxical reaction where I escape from that by coming转载 2013-12-24 11:39:46 · 794 阅读 · 0 评论 -
十级台阶走法(递归法)
十级台阶,一次跨一步,二步,有多少种走法?// stairs.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include using namespace std;/*//递归int step(int n){ if (n<=0) return 0; if (n==1原创 2010-09-11 14:39:00 · 1787 阅读 · 0 评论 -
深刻理解Linux进程间通信
深刻理解Linux进程间通信(IPC)0. 序1. 管道1.1. 管道概述及相关API应用1.2. 有名管道概述及相关API应用1.3. 小结1.4. 参考资料2. 信号(上)2.1. 信号及信号来源2.2. 信号的种类2.3. 进程对信号的响应2.4. 信号的发送2.5. 信号的安装(设置信号关联动作转载 2013-05-21 10:06:48 · 3709 阅读 · 0 评论 -
Static的应用
在C++语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.cpp,另一个是main.cpp。原创 2011-03-08 17:44:00 · 855 阅读 · 0 评论 -
C++ namespace的应用
<br />// Exception.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include<iostream>using namespace std;namespace blip{ int bi=16; int bj=15; int bk=23;}int bj=0;namespace A{ int i; namespace B原创 2011-03-03 11:36:00 · 789 阅读 · 0 评论 -
函数指针
函数指针 void (*f)()函数返回指针 void* f()const 指针 const int*指向const的指针 int* const指向const的const指针 const int* const以下为函数指针的应用#include "stdafx.h"#includeint max(int a,int b){ return a>b?a:b;}int _tmain(int argc, _TCHAR* argv[]){ int max(int,i原创 2010-11-07 11:25:00 · 484 阅读 · 0 评论 -
二分查找
<br />// Bseasrch.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include<stdio.h>//非递归做法int Besearch(int a[],int low,int high,int key){ int mid; while(low<=high) { mid=(low+high)/2; if(a[mid]==key)原创 2010-10-26 21:15:00 · 445 阅读 · 0 评论 -
面向过程与面向对象的区别
<br />“面向过程”是一种以事件为中心的编程思想。<br /> 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。<br /> “面向对象”(Object Oriented,简称OO)是一种以事物为中心的编程思想。<br /> 面向对象的程序设计(Object-Oriented Programming,简记为OOP)<br /> 比如以公共汽车而言。<br /> “面向过程”就是汽车启动是一个事件,汽车到站是另一个事件。在编程序的时候我们转载 2010-10-24 09:18:00 · 418 阅读 · 0 评论 -
inline与宏的区别
<br />区别如下:<br /> <br />1)内联在编绎时展开,宏在预编译时展开。<br />2)编译内联函数可以嵌入到目标代码,宏只是简单文本替换。<br />3)内联会做类型,语法检查,而宏不具这样功能。<br />4)宏不是函数,inline函数是函数<br />5)宏定义小心处理宏参数(一般参数要括号起来),否则易出现二义性,而内联定义不会出现。原创 2010-09-08 15:22:00 · 2640 阅读 · 0 评论 -
inline函数的好处与缺点
<br />优点:<br />1)inline定义的内联函数,函数代码被放入符号表中,在使用时进行替换(像宏一样展开),效率很高。<br />2)类的内联函数也是函数。编绎器在调用一个内联函数,首先会检查参数问题,保证调用正确,像对待真正函数一样,消除了隐患及局限性。<br />3)inline可以作为类的成员函数,刀可以使用所在类的保护成员及私有成员。<br />缺点:<br />内联函数以复制为代价,活动产函数开销<br />1)如果函数的代码较长,使用内联将消耗过多内存<br />2)如果函数体内有循原创 2010-09-08 15:15:00 · 32078 阅读 · 0 评论 -
sizeof的使用
<br />#include<iostream><br />#include<string><br />using namespace std;<br /><br />void UpperCase(char str[])<br />{<br /> int test1=sizeof(str);//这里的str表示指针<br /> int test2=sizeof(str[0]);<br /> cout<<"sizeof(str) is "<<test1<<" ."原创 2010-09-08 14:19:00 · 577 阅读 · 0 评论 -
指针与动态空间分配
第14章 指针与动态空间分配<br />指针极大地丰富了C语言的功能。学习指针是学习C语言最重要的一环,正确地理解指针与多维数组的关系、指针数组的概念、函数指针以及多级指针的概念,将有助于编写高效的程序。另一方面,通过指针可以构建链表,链表的引入解决了通过数组获取连续空间的某些限制。通过链表可以解决一些比较复杂的问题。14.1 指针与多维数组<br />前面介绍的数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。在实际问题中,有很多量是二维的或多维的,因此C语言允许构造多维数组。多维数组元素通转载 2010-06-22 16:14:00 · 7704 阅读 · 1 评论 -
枚举形参的使用
<br />enum Stat<br />{Fail,Pass};<br /><br /><br />void test(Stat)<br />{<br /> cout<<"This is a function!"<<endl;<br />}<br /> <br />void main()<br />{<br /> test(static_cast<Stat>(1));//等同于test(Pass)<br />}原创 2010-08-07 11:19:00 · 2876 阅读 · 0 评论 -
类引用(返回*this指针)
<br />class Screen<br />{<br />public:<br /> typedef std::string::size_type index;<br /> Screen():contents("Start:"),cursor(0),height(0),width(0){}<br /> Screen(string s,index p,index h,index w):contents(s),cursor(p),height(h),width(w){}原创 2010-08-07 11:16:00 · 2455 阅读 · 0 评论 -
引用左值(返回引用)
//更改函数返回值char &get_val(string &str,string::size_type ix){ return str[ix];}void main(){ string s("a value"); cout get_val(s,0)='A'; cout}原创 2010-08-04 15:24:00 · 561 阅读 · 0 评论 -
各类排序算法
快速排序void quickSort(int data[],int low,int high){ int i,j,pivokey; if(low { i=low; j=high; pivokey=data[i]; while(i { while(i j--; if(i原创 2010-07-16 12:25:00 · 610 阅读 · 0 评论 -
Dijstra算法及数据读法
#include#include//输出格式头文件#include#define N 5#define MAXNUM 32767using namespace std;int Edge[N][N];int s[N];int path[N];int dist[N];void shortestPath(int V){ int v=V;原创 2010-04-30 12:13:00 · 761 阅读 · 0 评论 -
标准IO流
Standard I/O StreamC++的标准输入/输出库 iostream 不仅提供了I/O库,还提供了使用库的流模式 " cin>>"流入和 " cout1.流状态 (Stream States) 1转载 2010-04-30 10:50:00 · 524 阅读 · 0 评论 -
C中读取数组
#include #include #define MAXSIZE 100main(){ FILE *fp; if ( (fp = fopen( "c://a.txt", "r" )) == NULL ) printf("ERROR!/n"); int tmp[MAXSIZE]; int i; for ( i=转载 2010-04-30 11:44:00 · 945 阅读 · 0 评论 -
十级台阶走法(非递归)
#include #include #include #define MAXSTEPS 10 unsigned long int xianxing(int steps, int once)//线性计算方法,用一个数组保存结果 //计算完毕后,返回数组最后一个值,就是结果。 {原创 2010-04-30 10:18:00 · 982 阅读 · 0 评论 -
K阶斐波那契数列
K阶斐波那契数列原创 2010-04-30 10:15:00 · 982 阅读 · 0 评论 -
C++中指针和引用的区别
C++中指针和引用的区别(摘)指针和引用的区别(1)引用总是指向一个对象,没有所谓的 null reference .所有当有可能指向一个对象也由可能不指向对象则必须使用 指针. 由于C++ 要求 reference 总是指向一个对象所以 reference要求有初值. String rs = string1; 由于没有所谓的 null refer转载 2009-08-07 16:15:00 · 504 阅读 · 0 评论 -
C++ 标准库 IO 操作
C++ 标准库 IO 操作C++ 通过以下几个类支持文件的输入输出:ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstream: 可同时读写操作的文件类 (由iostream引申而来) 打开文件(Open a file)对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文件联系起来,也就是说打开一个文件。被打开的文件在程序中由一个流对象(stream object)来表示 (这些类的一个实例) ,而转载 2010-08-27 21:28:00 · 1139 阅读 · 0 评论