楠
楠哥所写
时光若止-Dale
己所不欲,勿施于人;在邦无怨,在家无怨。
展开
-
Linux----进程间通信-管道与两个命名管道实现进程双向通信
在Linux系统中,有时候需要多个进程之间相互协作,共同完成某项任务,进程之间或线程之间有时候需要传递信息,有时候需要同步协调彼此工作,则就会出现进程间通信(interprocess communication 或者 IPC)信号也是进程间通信的一种机制,尽管其主要作用不是这个,一个进程向另一个进程发送信号,传递的信息是信号编号,当采用sigqueue()函数发送信号时,还可以在信号上绑定数据原创 2017-05-29 19:45:48 · 14390 阅读 · 2 评论 -
c++第二节之this指针
include原创 2017-02-15 00:51:25 · 237 阅读 · 0 评论 -
c++第一节之函数重载与缺省参数
在C语言编程中,一般情况下一种函数对应一种功能,有时候 我们想实现一种功能,只是其中有一些细节不同却需要不同的函数来实现 例如实现两个数的加减运算 C语言编辑下int Add_1 ( int a,int b);double Add_2 ( double a,double b);long Add_3 ( long a. long b);如果这些细节较多原创 2017-03-13 21:33:11 · 348 阅读 · 0 评论 -
visual studio 2008无法打开包括文件:“iostream.h”: No such file or directory
这里写图片描述 最后这是vs2008正确编辑c++时的情况 需要使用环境变量,原创 2017-03-16 18:08:26 · 1375 阅读 · 0 评论 -
c++第三节之命名空间
在C语言中,我们学过结构体,枚举,联合,他们其实就是一种命名空间,这些名称声明了一个数据的组织形式,并把他们放在一个独立的空间中。struct A { int a; float b; char ar[]; };//结构体声明union U {double a; int m;};//联合声明enum A {int a; char b;};//枚举声明在一个工程中,原创 2017-03-16 23:54:28 · 198 阅读 · 0 评论 -
Linux第一节之指令初识体验
你知道操作系统都有些什么吗?Windows啊。这是我在上大学之前的问答,我当时认为只一种叫做Windows的操作系统,可是我错了,当我上大学以后,第一次接触到了除Windows以外的操作系统,那就是linux,之后我便自己装了个虚拟机在上面又安装了linux发行版的centOS系统和Ubuntu,开始了linux之旅。Linux操作系统,是一种计算机操作系统,中文读法大致一般为“哩内克斯”,但真正原创 2017-03-18 18:49:57 · 303 阅读 · 1 评论 -
扫雷小游戏【C语言】
说起扫雷游戏,大家一定很熟悉了,但是你们知道是怎么实现的呢?今天我就来带大家一起分析分析:#include#include#includeint main (){ int delta[8][2] = {{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};//探测输入位置的周围点数 int row =0,原创 2017-03-20 12:36:33 · 403 阅读 · 0 评论 -
Linux之文件三个时间属性
在 Windows操作系统下,我们经常对一个文件进行访问,然后写入一些重要的东西保存之后我们总能从目录下直接看出它的新创始时间,我们时刻都知道我们自己什么时候操作了这个文件。那在Linux下,我们怎么观察呢? 在Linux下,我们使用命令stat来查看文件的详细信息情况: 我们可以看到,在详细信息中出现Access,Modify,Change三个时间属性那我们来理解一下:原创 2017-03-22 17:48:53 · 780 阅读 · 0 评论 -
C++之构造函数,拷贝构造,析构函数
类是一种复杂的数据类型,它是将不同类型的数据与这些数据相关的操作封装在一起的一个集合,类具有对数据的抽象性,隐藏性,封装性 在类中,存在着六个默认函数,构造函数,拷贝构造函数,析构函数,赋值操作符重载,取地址操作符重载,const取地址操作符重载 构造函数: 是一个特殊的成员函数,名字与类名相同,创建类类型对象时,由编译器自动调用,在对象的生命周期内,只且只调用一次. 拷贝构造函原创 2017-03-27 19:37:55 · 572 阅读 · 1 评论 -
C++之构造函数,拷贝构造,析构函数再剖析
我们已经了解了构造函数,析构函数基本用法,创建一个对象,我们可以调用构造函数进行初始化,要是我们用已知的对象去创建另一个对象呢? 例如:Tpoint d1(3,5);Tpoint d2(d1);//考虑考虑由一个对象初始化另一个对象,系统会调用拷贝构造函数或者默认拷贝构造函数 拷贝构造函数 1:名字与类同名,并且不被指定返回类型 2:只有一个参数,并且为类对象的引用 3:格式 <类名原创 2017-03-27 22:14:21 · 317 阅读 · 0 评论 -
C++第六节之运算符重载(复数运算)
在C++中,运算符 + - * / 已有了规定,只能运算整数型,浮点型,其中+ - 在一定范围内可以对字符型进行运算,如果需要对复数,分数或者其他操作数作四则运算,就要对他们进行重新定义这就是运算符重载的含义 运算符重载是为了满足某种操作的需求,在原有运算符实现不了,又不增加新的运算符种类基础上,对相近意义上的运算符进行重载大多数运算符都可以重原创 2017-03-28 16:12:19 · 2024 阅读 · 0 评论 -
Linux之 find | locate 查找命令详情
在Windows操作系统下,我们可以利用文件搜索栏对想要寻找的文件进行搜索,已达到高效,便捷。那在Linux这个命令指示的天堂下,我们怎么来搜索我们想要的东西呢? 其实在Linux下,给出了一种非常强大的命令行指令——find——查找文件和目录,并可对查找的文件执行指定操作 在了解find之前,我们了解一下同样为查找文件的指令locate 一、locate(查找文件) 1、它的工作机原创 2017-03-30 15:13:33 · 1328 阅读 · 0 评论 -
linux—vim 实用配置
在刚开始学习linux时,都会使用 vi/vim来编写c/c++程序,但相信大多数初学程序员面对 没有配置的vi/vim来说都是痛苦的 这里记录了小编的配置过程:一 在连不了网的情况下 首先我们查看主目录下是否存在 .vim .vimrc 文件 如果没有就创建它们 (mkdir ) 接着去下载插件: Winmanager 插件(文件浏览器和窗口管理器 在底层模式下原创 2017-04-03 21:28:01 · 318 阅读 · 0 评论 -
C++之单继承与多继承
继承性是面对对象程序设计中最重要的特征之一它允许在既有类的基础上创建新类,并可以根据所面对问题的不同情况对新类进行更具体,更详细的说明与操作。 通过代码看基类与派生类class A //基类{public: int _pub;protected: int _pro;private: int _pri;};class B: protected A原创 2017-04-13 16:37:21 · 10018 阅读 · 0 评论 -
C++之多态
从多态实现的时间来看,可分为编译时多态(静态多态)和运行时多态(动态多态) 静态多态:函数重载,运算符重载,泛型编程等 动态多态:通过虚函数实现。调用规则:动态绑定(使用基类的指针或引用调用虚函数时,根据指针或引用所绑定的对象的类型不同来确定调用基类还是派生类函数) 静态多态:class A{public: void Funtest() { cout <<原创 2017-04-13 22:20:45 · 497 阅读 · 0 评论 -
Linux进度条实现与Makefile文件创建
#include <stdio.h>#include <unistd.h>#include <string.h>int main(){ int i = 0; char arr[102] ={' '}; //memset(bar,0,102*sizeof(char));//创建数组大小 const char* lable="|/-\\"; while(i<= 10原创 2017-04-15 13:59:31 · 292 阅读 · 0 评论 -
C++中继承与多态再总结
在前面,我们已经学习了继承与多态的基本实现,基本内存分布,调用规则 c++之单继承与多继承http://blog.csdn.net/qq_36782456/article/details/70159407 c++之多态分析 http://blog.csdn.net/qq_36782456/article/details/70162759 单继承://派生类公有继承基类(存在虚函数)原创 2017-04-16 15:01:05 · 441 阅读 · 0 评论 -
Linux下进程管理之task_struct结构体
**进程是处于执行期的程序以及它所管理的资源(如打开的文件、挂起的信号、进程状态、地址空间等等)的总称。注意,程序并不是进程,实际上两个或多个进程不仅有可能执行同一程序,而且还有可能共享地址空间等资源。**Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个进程所需的所有信息。它定义在linux-2.6.38.8/include/linux/sche原创 2017-04-17 19:59:43 · 495 阅读 · 0 评论 -
C语言实现简易三子棋
game.h 文件中代码#ifndef __GAME_H__#define __GAME_H__#include <stdio.h>#include <stdlib.h>#include <time.h> //定义棋盘#define ROWS 3#define COLS 3//打印菜单void menu(void);//初始化棋盘void init(char board[ROW原创 2017-04-18 18:16:22 · 280 阅读 · 0 评论 -
在vs中安装Easyx图形库(仅c++)
下载EasyX图形库,链接http://www.easyx.cn/downloads/手动安装:a.将Include文件夹中的所有头文件复制到VS2012的头文件目录中,为:自己安装目录下\VC\include;b.将lib文件夹中的lib文件复制到VS2012的lib库文件夹中,为:自己安装目录下\VC\lib;c.将lib\amd64中的文件复制到VS2012相应的库文件夹中,为:自己安装原创 2017-04-18 19:20:34 · 11286 阅读 · 0 评论 -
C语言——带头节点单链表常见操作
#include <stdio.h>#include <stdlib.h>typedef struct stu{ int data; //存放数据 struct stu* next; //下一个节点地址}Node;typedef struct{ int count; // 节点个数 Node* head; // 头结点}List;//创建新节点功能原创 2017-04-20 17:04:20 · 5028 阅读 · 7 评论 -
Linux之进程标识符与命令行参数,环境变量
上次我们了解了进程管理之 task_struct结构体 http://blog.csdn.net/qq_36782456/article/details/70215396 接下来我们看看具体内容。每个进程都把他的信息存放在task_stuct的结构体中。 task_stuct的内容为://标识符 描述本进程的唯一标识符,用来区分其他进程//状态 任务状态,退出代码,退原创 2017-04-21 15:54:21 · 1140 阅读 · 0 评论 -
Linux——进程再识,进程状态、创建与写实拷贝
Linux下每个进程都会有一个非负整数来表示唯一的进程,每个进程都会有自己的父进程,父进程又会有自己的父进程,最终都会追溯到一号进程进 init 进程,这就决定了操作系统上所有的进程都会组成树状结构,就像一个家庭的家谱一样。可以通过pstree来查看进程的家谱图, 这样就必须保证操作系统不能同时出现两个相同的进程,虽然进程ID是唯一的,但是进程ID可以重用,进程退出后,其进程ID也可以再次分配原创 2017-04-22 12:03:02 · 433 阅读 · 0 评论 -
C++——string的深拷贝与浅拷贝
在c++中,基本所有的类都要考虑深拷贝,浅拷贝与写时拷贝,根据不同的定义,选择适合自己的拷贝方式。时间类就可以用浅拷贝,而二叉树,string类就需要深拷贝。 string类在vs编译器下使用的深拷贝,在Linux下使用的浅拷贝。 为什么会存在深浅拷贝的问题呢? string的浅拷贝是让两个不同的指针指向同一块空间,而这在析构的时候会出现将一块空间释放两次,程序会崩溃,因此我们才需要进行深拷贝原创 2017-04-29 16:12:58 · 10064 阅读 · 0 评论 -
模拟实现strlen,strcpy,strcmp,strcat,strstr库函数
模拟实现strlen库函数 功能:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符'\0'。返回的长度大小不包括'\0'。int my_strlen(const char* str){ assert(str); int count = 0; while (*(str+原创 2017-04-29 16:13:47 · 616 阅读 · 0 评论 -
剑指offer——字符串转换为整数
在c语言中,有一个函数我们可能不经常使用,那就是字符串转换为整数函数 atoi()atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数atoi( ) 函数会扫描参数 nptr字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过isspace( )函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。原创 2017-04-30 12:55:29 · 299 阅读 · 0 评论 -
C语言——静态顺序表常见操作
不用多说,直接贴代码 list.h 文件#ifndef __LIST_H__#define __LIST_H__#include<stdio.h>#include<stdlib.h>#include<assert.h>#define Max_t 100typedef int Typename;typedef struct Palist{ Typename arr[Max原创 2017-05-01 13:25:20 · 859 阅读 · 0 评论 -
C++——模板
c++面向对象程序化设计的目标和重要特征之一就是实现代码重用,从而减少程序设计人员的工作量,如果要实现代码的可重用性,一般而言,代码必须高效,通用,不受数据类型与操作的影响,可适用于不同的情况,越通用性代码越支持可重用性,这种程序化设计称为参数化程序设计,模板是c++面向对象中支持参数化的重要工具,是更高一级抽象与参数多态的体现。模板分为函数模板与类模板,但模板并不是通常意义上的可以直接使用的函数或原创 2017-05-09 17:59:02 · 205 阅读 · 0 评论 -
c++——异常
人们在使用不同软件系统时,可能会遇到各种各样的异常或错误,软件运行中产生的异常给应用带来不便,因此在软件设计中,在保证软件能正确完成任务的同时,还应该使之具有良好的容错性。传统的异常处理方法 通常采用系统提供的中断函数或指令 void abort() 中断程序执行,返回主c++窗口 stdlib.hvoid assert() 若表达式值为false,原创 2017-05-09 18:36:53 · 263 阅读 · 0 评论 -
c语言 常见知识点
1、写一个“标准”宏MIN ,这个宏输入两个参数并返回较小的一个#define MIN ((A) <= (B) ? (A) : (B))解答:实现输入两个参数并返回较小的一个,应使用三目表达式。使用必须的足够多的圆括号来保证以正确的顺序进行运行和结合。使用#define需要注意下面几点:(1)宏的名字中不能有空格,但是在替代字符串中可以使用空格。ANSI C 允许在参数列表中使用空格。(2)用圆原创 2017-05-10 21:09:21 · 476 阅读 · 0 评论 -
用C语言实现c++的封装、继承、多态
c++的三大特性:封装、继承、多态 如何用C语言实现呢? 1、封装 在c++中,将数据与数据的操作封装在一起,也就是类 类只对外界开放接口,将接口的实现细节与类的一些属性,变量隐藏起来,达到数据的抽象性,隐藏性与封装性。 在C语言中,有一个类似于封装的类型——struct结构体(能够将多种数据类型封装在一起),那怎么实现将数据的操作一起封装起来呢? 我们想到了函数指针//函数指原创 2017-05-10 21:29:21 · 2064 阅读 · 0 评论 -
c++——双向循环链表常见操作
双向循环链表示意图: 代码:#ifndef __LIST_H__#define __LIST_H__#include <stdio.h>#include<iostream>#include<assert.h>using namespace std; class Listnode{public: int _data; Listnode * prev; //前续指针原创 2017-05-13 19:25:28 · 997 阅读 · 0 评论 -
Linux——文件描述符与文件管理结构
Linux中的文件文件: Linux内核将一切视为文件,那么Linux中文件是什么呢?其既可以是事实上的真正的物理文件,也可以是设备,管道,甚至可以是一块内存,狭义的文件是指文件系统中的物理文件,广义上的文件可以是Linux管理的所有对象。这些广义的文件利用VFS机制,以文件系统的形式挂载在Linux内核中,对外提供一系列的文件操作接口。文件描述符:对于linux而言,所有对设原创 2017-05-16 19:21:04 · 1272 阅读 · 0 评论 -
【C语言】指针和数组的区别和联系
1.指针 int* p (这里定义一个指针 p为指针变量 指向的是某一个地址) 2.数组 int arr [10] 这里定义了10个int 类型的数据 可以通过arr[0] arr[1].....来访问数组中的每个元素3.指针数组 顾名思义:首先是一个数组原创 2017-02-14 10:40:41 · 680 阅读 · 0 评论 -
编一个程序,从它标准输入读取c源代码,并验证所有的花括号都是成对出现的
#include int main() { int ch,i=0; ch = getchar(); if ( ch=='}') printf("unmatched!"); while ( ch !=EOF) { if( ch =='{') i++;原创 2016-12-08 00:20:09 · 339 阅读 · 0 评论 -
C语言 猜数字游戏
#include #include #include /*用到了time函数,所以要有这个头文件*/void menu(){ printf("************************猜数字游戏**********************\n"); printf("**********原创 2016-12-05 00:18:01 · 440 阅读 · 0 评论 -
二分查找非递归与递归实现
#include <stdio.h>int BinSearch(int *str, int sz, int key) //非递归{ int left = 0; int right = sz-1; int mid; while (left <= right) { mid = (left + right) / 2; if原创 2017-05-17 17:53:50 · 185 阅读 · 0 评论 -
不同方法实现1+2+3+4+5+....+n
方法一: 普通函数实现:#includeint Sum(int n){ int sum = 0; while (n) { sum += n; n--; } return sum;}int main(){ printf("%d ", Sum(10)); return 0;}方法二: 递归实原创 2017-05-17 17:55:32 · 2491 阅读 · 0 评论 -
斐波那契数列编程C语言
斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …#include long long Fbnl(int N) //非递归{ int a1 = 0; int a2 = 1; int a3 = N; printf(" 0 "); for (int i = 2; i <N原创 2017-05-17 17:56:28 · 38231 阅读 · 1 评论 -
c++—智能指针
在c++中,动态内存的管理是通过一对运算符来完成的:new //在动态内存中为对象分配空间并返回一个指向该对象的指针,我们并可以选择对对象初始化delete // 接受一个动态对象的指针,销毁该对象,并释放与之关联的内存动态内存的使用很容易出现问题,因为确保在正确的时间释放内存是相当困难的,有时我们会忘记释放内存,在这种情况下会产生内存泄漏,有时在尚有指针引用内存的情况下我们就释放了它,在这原创 2017-05-17 18:49:55 · 212 阅读 · 0 评论