c/c++
文章平均质量分 66
Richard-Rong
Life rewards courage.
展开
-
this 指针
我们知道,每个对象的成员函数都可以操作对象的数据,成员函数如何知道操作的是哪个对象?每个对象都可以通过this指针访问自己的地址。对象的this指针不属于对象的一部分,即this指针不会出现在sizeof的操作结果中。但this指针会在每次非static成员函数调用对象时作为一个隐式参数传递给对象(通过编译器)。下面通过一个程序来说明this指针如何进行调用的。#includeu原创 2012-08-03 21:57:34 · 842 阅读 · 0 评论 -
堆栈的进栈以及出栈
今天是国庆节的第一天,没有出去旅游,在学校学习,马上就要找工作了,希望能够找到一个好的工作。堆栈是今天上午写的一个程序。堆栈是一种先进后出的数据存放的格式。具体的操作见程序:#include#include#includetypedef struct St{ int data; struct St *pNext;}NODE,*PNODE;typede原创 2012-10-01 12:04:11 · 6470 阅读 · 1 评论 -
求循环链表答疑
今天是国庆节的第四天,早上起来写了一个关于循环链表的程序。单循环链表的结构如下:下面是我写的具体的程序:#include#include#includetypedef struct node{ int data; struct node *pNext;}NODE,*PNODE;PNODE creat_List(PNODE);void tr原创 2012-10-04 10:26:49 · 871 阅读 · 0 评论 -
循环队列
队列分为两种,一种是链式队列,一种是静态队列,而静态队列一般通过循环队列来实现。下面是一个简单的循环队列的程序。#include#includetypedef struct queue{ int *pBase; int rear; int front;}QUEUE;void init_queue(QUEUE*);//初始化队列void原创 2012-10-02 10:41:22 · 870 阅读 · 0 评论 -
二叉树的遍历
二叉树是面试中经常考到的题目,也是最能考察一个初级程序员的思维能力和逻辑能力,以及对指针掌握的能力。经常的二叉树题目分为两种: 一、对二叉树进行前序遍历、中序遍历、后序遍历。 二、对已经给出的二叉树的前序遍历和中序遍历或者给出的中序遍历和后序遍历求出二叉树,并进行遍历输出。 这里的二叉树的遍历主要是针对静态二叉树遍历来说的。二叉树的结构如下:程序代码如下:#原创 2012-10-06 16:46:39 · 3543 阅读 · 0 评论 -
自增运算符的重载
运算符的重载有两种方法:1、通过成员函数来重载2、通过友元函数进行重载重载的一个重要的特点:1、成员函数参数的个数 = 几目运算符 - 1;例如: = ,+,+=,这些运算符都是双目运算符,所以类的成员函数的参数是1.2、友元函数参数的个数 = 几目运算符。一般说来,单目运算符最好被重载为成员函数,双目运算符被重载为友元函数。下面是前置自增运算符和后置自增运原创 2012-10-20 10:21:55 · 1429 阅读 · 0 评论 -
快速排序
快速排序是面试中经常被考到的算法,所以掌握快速排序很重要。。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。例:5 2 6 8 4 3 7经过第一次快速排序之后: 3 2 4 5 8原创 2012-10-20 11:33:55 · 613 阅读 · 0 评论 -
斐波那契数列
又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用。而斐波那契数列在程序中也会经常遇到。下面是我写的一个简单的斐波那契数列。#includeint Pheponatch(int);原创 2012-10-20 14:33:34 · 812 阅读 · 0 评论 -
关于内存的思考
一、void GetMemory(char *p){ p = (char*)malloc(100);}void Test(void){ char *str = NULL; GetMemory(str); strcpy(str,"Hello,World"); printf("%s",str);}请问运行Test有什么样的结果?答:在函数内部修原创 2012-10-22 07:02:27 · 984 阅读 · 0 评论 -
字符串的构造函数和析构函数以及赋值函数的重载
字符串的构造函数和析构函数以及赋值函数的重载,是面试中经常考到的问题,意在考察应聘者对于重载以及构造函数、析构函数的理解。程序如下:#include#includeusing namespace std;class String{public: String(const char*str = NULL); String(const String &other);原创 2012-10-22 07:36:19 · 3019 阅读 · 1 评论 -
如何判断单链表里面是否有环
定义两个指针p、q,然后让p、q同时从链表头向后查找,注意他们移动的步幅是不同的分别为a、b,例如p指针每次执行一次【p = p->next;】q每次执行两次【q = q->next;】,如果q先到链尾【if(q->next == NULL)】则没有死循环(这里假设q比p的移动速度要快),如果p、q在此之前相遇了则有死环。实现的函数如下:bool CircleInList(原创 2012-10-21 08:40:24 · 1317 阅读 · 0 评论 -
Linux 的进程组、会话、守护进程
1、进程组 2、会话 3、守护进程原创 2013-10-12 16:20:05 · 2346 阅读 · 1 评论 -
Linux 添加环境变量和删除环境变量
环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如PATH.在交叉编译中,会经常运用到环境变量的设置。在linux中,查看当前全部的环境变量的命令式env. 当然也可使用 echo来查看环境变量的值。例如查看PATH的内容:echo $PATH 例如要将/home/rongdeguo/Code 加入到环境变量中,可以在shell中输入export原创 2013-10-12 17:10:40 · 9241 阅读 · 1 评论 -
线程访问控制
为什么要进行线程控制呢?就如同我和媳妇买了一辆车,我和我媳妇是共享这两车的,就类似于线程共享进程的资源。当我们开车去拉萨的时候,我可以开车,她也可以开车,但是两个人不能同时开车,只能一个人来开,要不就会出问题。所以当我需要开车时,我就坐在驾驶的位置上,就相当于给线程上锁了,一旦我坐在驾驶座上,就是我来开车了,别人谁也别想开车,自己媳妇也是不行的。很明显,这是为了安全,是啊,线程控制也是为了安全,省原创 2013-10-14 18:26:18 · 1082 阅读 · 0 评论 -
Linux 信号和信号集
信号是linux所使用的进程间通信的最古老的方式。它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式 。一个完整的信号周期包括三个部分,信号的产生,信号在进程中的注册,信号在进程中的注销,执行信号处理函数。如下图所示:注意:这里信号的产生,注册,注销时信号的内部机制,而不是信号的函数实现。对信号的响应由三种方式:1、忽略信号,即对信号不做任何的处理。处SIGKILL和S原创 2013-10-14 14:08:14 · 6708 阅读 · 1 评论 -
ioctl在socket中的一些用法及示例
函数 : ioctl(int fd, int request, void * arg)定义 : 功能 : 控制I/O设备, 提供了一种获得设备信息和向设备发送控制参数的手段.参数 : int fd 文件句柄. 用于socket时, 是socket套接字. int request 函数定义的所有操作. 关于socket的操作, 定义在文件中.原创 2013-11-22 16:56:45 · 5819 阅读 · 1 评论 -
typedef 函数指针
1、简单的函数指针应用:char (*pFun)(int); char glFun(int a){ return;} void main() { pFun = glFun; (*pFun)(2); } 第一行定义了一个指针变量pFun。首先我们认识到它是一个指向某种函数的指针,这种函数参数是一个int型,返回值是char类型。只有第一句我们还无法使用这个指原创 2013-12-02 15:13:24 · 872 阅读 · 0 评论 -
链表的创建、插入、删除操作
早上起来写的一个简单的链表的操作。今天是中秋节,祝大家中秋快乐,阖家团圆! #include#include#includetypedef struct St{ int data; struct St* pNext;}NODE,*PNODE;PNODE creat_List(PNODE pHead);void travse_L原创 2012-09-30 09:27:48 · 6758 阅读 · 1 评论 -
多态性(纯虚函数与抽象类)
将一个虚函数初始化为0之后,该函数就变成了纯虚函数。如:viurtual double area() = 0;这个虚函数是无任何的功能,不能直接来调用,因为它是抽象的,只有被子类继承并赋予功能后才可调用。一个类可以有多个纯虚函数,但是只要有一个纯虚函数给类就是抽象类。抽象类只是一个概念,就如同人类一样,没有任何的功能,人类这个概念不能吃饭,不能睡觉,只有实体的人才可以具有以上的功能。原创 2012-08-01 22:02:28 · 824 阅读 · 0 评论 -
静态成员变量和静态成员函数
我们学到的类对象的成员变量一般都是这个对象专属,不能为其他对象所共有。然而在实际编程中我们需要统计对象的数量等问题,所以就必须设置一个类的对象所共有的变量,就是静态成员变量。首先通过一个简单的例程 说明静态成员如何使用。#includeusing namespace std;class A{public: A(int num): it(num) { total++原创 2012-07-31 21:52:44 · 552 阅读 · 0 评论 -
链表
链表是c++数据结构中重要的一节。下面通过一个程序来说明如何定义链表以及如何操控链表。程序如下:#ifndef LISTNODE_H#define LISTNODE_Htemplate class List;template class ListNode{ friend class List ; public: ListNode(const NODETY原创 2012-07-30 15:24:12 · 543 阅读 · 0 评论 -
结构体struct
在网络协议、通信控制、嵌入式系统等我们需要传送的不是简单的字节流,而是包含了很多数据类型的一个整体。这时候,我们可以通过结构体来进行解决。在结构体中,数据默认是共有的,可以进行直接的访问,而在类中,数据默认的是私有的。结构体的定义如下:struct date{ int year; int month; int day;};也可以这样进行定义:struct date原创 2012-08-06 15:53:40 · 763 阅读 · 0 评论 -
找到肇事司机
实例介绍:一辆卡车违反交通规则,撞人后逃跑。现场有三位目击者,但都没有记住车牌号,只是记住一些特征。甲说:牌照的前两位相同。乙说,牌照的后两位相同,但与前两位不同。丙是数学家,他说,四位的车号刚好是一个整数的平方。根据以上求出肇事车牌号。下面是题目的程序:#include#includeint main(){ int i,j,goal,c; for(i =1 ;i <原创 2012-08-06 20:56:18 · 2875 阅读 · 0 评论 -
链表的一个小程序
链表是c语言中比较难掌握的一个知识点,不要只是看看程序就觉得懂了,如果不进行实践,其实很难发现其中所存在的盲点。所以,在学数据结构的时候,即使比较难,也要静下心来将程序自己敲出来。切忌眼高手低。通过链表管理图书的程序,只是进行简单的输入和输出,并没有进行插入和删除。性对来说比较简单。下面是我的链表的程序。#include#include#includetypede原创 2012-08-06 20:32:31 · 861 阅读 · 0 评论 -
c++多继承机制
由于两义性问题的根源在公共基类,因此需要从公共基类着手,将公共基类说明为虚基类,就可以避免二义性。代码如下:#includeusing namespace std;class human{public:void speak(){cout};class father : virtual public human{publ原创 2012-07-23 20:22:15 · 580 阅读 · 0 评论 -
c++模板机制
一、函数的模板函数模板其实就是一个模子,用这个模子可以浇注出许多功能相同、参数类型和返回类型不同函数,从而实现代码的重用。一般的模板是template,当然新标准c++又增加了一个关键字typename,可以替换class,如:template为了向下兼容,不建议用typename。废话少说,上程序:#includeusing namespace std;templatevo原创 2012-07-24 21:16:00 · 1875 阅读 · 0 评论 -
由自定义字符串的连接所想到的
今天随便写个小程序,就写了一个字符串连接的程序。接下来是我写的程序,可是问题却出现了,在主函数中不能把字符串打印出来。先看程序:#includechar* strcat(char*,char*);int main(){ char *str; char str1[80] = "Hello world"; char str2[] = "I love you "; s原创 2012-08-09 16:44:13 · 550 阅读 · 0 评论 -
c++命名空间
命名空间主要解决命名冲突的问题。命名空间有程序员自己来存放任何东西,包括类、对象、函数、结构体等。下面简单的一个程序来说明命名冲突的问题。int x =5;//自己单独的一个文件 "定义.h"#include#include "定义.h"using std::cout;using std::endl;int x=3;int main(){ cout<<x<<e原创 2012-07-26 14:58:03 · 440 阅读 · 0 评论 -
c++异常处理(一)
什么是异常? 比如当程序要求输入一个数字,如果输入数字就会运行很好,但是当输入一个字符的时候程序就会崩溃;当内存不够程序使用,或者硬盘的某个扇区出现坏道导致程序不能写入,以及U盘未插好,都会出错。而c++提供了处理异常的方法:try{ wrong();}catch(outof memory){//发送错误信息给用户}下面给出原创 2012-07-26 21:35:53 · 488 阅读 · 0 评论 -
数字加密
某个公司采用公共用电话传递数据,数据是4位的整数,在传递工程中是加密的,加密的规则如下:每位的数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。请输入数据,并求出加密的数。经过分析,程序如下所示:#includeint main(){ int num; //要输入的数据 int i; int aa[4];//存放结果的原创 2012-08-11 21:23:32 · 1715 阅读 · 0 评论 -
异常处理之智能指针
在编程中会分配动态内存,将内存地址赋给一个指针,利用指针来操控内存,并在不需要的时候利用delete释放。如果内存分配之后,还没有来得及释放内存就发生了异常,可能就会造成内存泄露。c++ 提供智能指针来解决之一问题。auto_ptr的对象存在,它指向的字符串就存在,auto_ptr不存在,会自动销毁它指向的对象,从而避免了内存泄露。所以叫智能指针。下面用一个程序来说明智能指针是如何使用的:原创 2012-07-27 15:38:56 · 666 阅读 · 0 评论 -
重载运算符一
运算符重载的特点在实现运算符重载的方法有2种:1.用类的成员函数来实现;2.通过类的友元函数来实现。一个很重要的特点:1.用类的成员函数来实现成员函数的形参个数 = 几目运算符 - 1假设重载运算符=,+,或+=,这些运算符是双目运算符,所以类的成员函数的形参必须为1.2.通过类的友元函数来实现友元函数的形参个数 = 几目运算符假设重载运算符=,+,或+=,原创 2012-07-27 16:47:50 · 564 阅读 · 0 评论 -
重载运算符实现精简版string类
c语言利用数组保存字符串,经常在不经意中浪费了大量的空间,使用起来十分的不方便,而且容易出错,为了解决c语言字符串的问题,c++增加了一个string类。本例就是为了说明通过运算符的重载而实现的。代码如下:#includeusing namespace std;class String{public: String(); ~String(); String(const原创 2012-07-27 20:06:22 · 2420 阅读 · 0 评论 -
友元类
与人类相同,类也有朋友,当一个类成为另一个类的友元类时,另一个类的私有成员以及保护成员就会暴露给友元类。我们把类A设置为B的友元,这并不会使B成为A的友元。声明友元类的方法:friend class B;下面通过一个例子说明。用遥控器来遥控电视。首先遥控器不是电视的派生,它们不具有共同的属性,再者遥控类不是电视类的嵌套,但是遥控类可以访问电视类,所以我们可以讲遥控类设置为电视的友元类。这样原创 2012-07-29 08:46:22 · 2517 阅读 · 0 评论 -
HEVC
HEVC,英文全拼:High Efficiency Video Coding,是一种新的视频压缩标准。可以替代H.264/ AVC编码标准。但是,现有的压缩方案,比如H.264、MPEG-4等等仍然是非常落后的技术,也许你会说像苹果iTunes中的各种视频内容下载、天空台高清电视频道的编解码器等都使用H.264技术,但如今我们正在引进更高效率视频编码(HEVC,即H.265)却仍然是不原创 2015-02-11 00:02:23 · 1384 阅读 · 0 评论