
1. C++
文章平均质量分 53
玄苦大师233
机会往往是长期准备和酝酿的而不能只靠一时的主动与激情所以认真写好技术博客吧
新博客 =》https://chenguolin.github.io/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【C++ - 34】linux c文件操作接口
文章转载自: http://blog.sina.com.cn/s/blog_71d1a98701010s0v.html1. open 函数 1). 功能描述: 用于打开或创建文件,在打开或创建文件时可以指定文件的属性及用户的权限等各种参数。 2). 所需头文件: #include<sys/types.h> #include<sys...转载 2016-05-07 23:55:35 · 4343 阅读 · 0 评论 -
【C++ - 33】linux c++ 多线程编程
文章参考: http://www.cnblogs.com/forstudy/archive/2012/04/05/2433853.html一. 进程和线程 进程 (1) 系统中程序执行和资源分配的基本单位 (2) 每个进程有自己的数据段、代码段和堆栈段 (3) 在进行切换时需要有比较复杂的上下文切换 线程 (1) 减少处...转载 2016-04-23 11:36:27 · 2611 阅读 · 0 评论 -
【C++ - 1】高效C++编程
推荐编写C++的代码风格,看似容易,坚持不易,且写且珍惜! --陈国林1.版本和版本声明版本和版本文件声明位于头文件和定义文件的开头,主要内容(1)版本信息(2)文件名称、标识符、摘要(3)当前的版本号、作者、修改日期(4)版本历史信息2.程序版式(1)在每个类声明之后、每个函数定义之后都要加上一个空行(2)一行代码只做一件事情(3)if、...原创 2014-05-23 12:40:20 · 1812 阅读 · 0 评论 -
【C++ - 27】C++ 调用Linux系统命令
一个简单的C++程序,Test函数用来测试调用Linux的系统命令ls -l#include<cstdlib>#include<string>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using n...原创 2014-10-07 17:08:09 · 8411 阅读 · 1 评论 -
【C++ - 32】C++多线程
转载自:http://blog.chinaunix.net/uid-24185908-id-3052676.html一. 进程和线程 进程是没有活力的,它只是一个静态的概念。为了让进程完成一些工作,进程必须至少占有一个线程,所以线程是描述进程内的执行,正是线程负责执行包含在进程的地址空间中的代码。实际上,单个进程可以包含几个线程,它们可以同时执行进程的地址空间中的代...转载 2016-04-18 00:16:43 · 2398 阅读 · 0 评论 -
【C++ - 31】C++ sting字符串函数详解
文章转载自:http://www.renfei.org/blog/introduction-to-cpp-string.html1. 运算符重载 a. + 和 +=: 连接字符串 b. =: 字符串赋值 c. >、>=、< 和 <=: 字符串比较(例如a < b, aa < ab) d. ==、!=...转载 2015-05-23 16:41:19 · 4129 阅读 · 1 评论 -
【C++ - 29】浮点数的二进制表示
文章转载自:http://www.ruanyifeng.com/blog/2010/06/ieee_floating-point_representation.html 1. 前几天,我在读一本C语言教材,有一道例题: #include <stdio.h> void main(void){ int num=9;/* num是整...转载 2015-04-29 14:53:26 · 2313 阅读 · 0 评论 -
【C++ - 26】STL之list
一. list介绍1. 相对于vector是连续的线性空间,list是一个不连续的存储空间。每次在list中插入或删除一个元素,就配置一个或释放一个元素空间,因此list对于空间的使用有绝对的精准,一点都不会浪费的。2. STL中list的结点结构,在STL中list是一个双向链表。list结点如下图所示template<typename T>stru...原创 2014-06-16 16:03:24 · 2864 阅读 · 0 评论 -
【C++ - 25】STL之vector
一. vector概述 1. vector的数据安排以及操作方式与数组非常的相似。数组是静态空间,一旦配置了就无法改变其大小。但是vector是动态的,随着元素的加入它的内部机制会自动扩充空间以容纳新元素,所以不用担心vector的空间问题。 2. vector的内部实现机制:定义一个vector的时候,如果不指定大小默认会开辟一块大小为n(n是默认值)的空间,如果...原创 2014-06-14 10:18:49 · 2375 阅读 · 1 评论 -
【C++ - 24】STL六大组件
一. STL六大组件介绍1. 容器STL容器包含两种:序列式容器主要有vector、list、deque,以及关联式容器主要有set、map、multiset、multimap。容器主要是用来存放数据的,从实现的角度来看容器是一种class template(类模板)。2. 算法STL包含算法达上百种,主要有sort、search、copy、erase、find等,...原创 2014-06-13 07:59:47 · 5175 阅读 · 0 评论 -
【C++ - 23】虚函数之二
一. 设置虚函数需要考虑五个方面1. 只有类的成员函数才能声明为虚函数2. 类的静态成员函数不能为虚函数,因为调用静态成员函数不需要实例只需要用类名即可。而调用一个虚函数需要类的实例化对象,因为需要从实例化对象中的指向虚函数表的指针得到虚函数的地址,所以静态成员函数是不能为虚函数的3. 内联函数不能为虚函数。 因为内联函数是在编译的时候决定要不要内联的,内联...原创 2014-06-07 00:31:40 · 1087 阅读 · 0 评论 -
【C++ - 22】虚函数
一. 什么是虚函数1. 虚函数是面向对象编程中函数的一种特定形态,是C++中用于实现多态的一种有效机制2. 虚函数用virtual修饰函数名,虚函数的作用是在程序的运行阶段动态的选择合适的成员函数,在定义了虚函数之后,可以在基类的派生类中对虚函数进行重定义,在派生类中重定义的函数与基类虚函数具有相同的函数返回值、函数参数列表、函数名等。如果派生类中没有重定义基类的虚函数则它是直...原创 2014-06-06 23:01:08 · 1136 阅读 · 0 评论 -
【C++ - 19】C++中重载和覆盖的区别
一. 重载(overload)1. 重载指的是函数具有的不同的参数列表,而函数名相同的函数。重载要求参数列表必须不同,比如参数的类型不同、参数的个数不同、参数的顺序不同。2. 如果仅仅是函数的返回值不同是没办法重载的,因为重载要求参数列表必须不同。3. 程序是根据参数列表来确定具体要调用哪个函数的4. 看下面几个例子void Fun(int a);void Fun(d...原创 2014-05-28 11:29:17 · 10434 阅读 · 0 评论 -
【C++】对象转换显示转换
一. static_cast用法:static_cast (expression)说明:该运算符把expression转换为typeid类型,但没有运行时类型检查来确保转换的安全性。用途用于类层次结构中基类和派生类之间指针或者引用的转换。up-casting (把派生类的指针或引用转换成基类的指针或者引用表示)是安全的;down-casting(把基类指针或引用转换成子类的指针或者引...原创 2019-05-30 09:26:08 · 742 阅读 · 0 评论 -
【C++】虚函数探讨
一. 引言C++面向对象语言的一大特性就是抽象,在程序设计上的体现就是鼓励面向接口编程,而不要面向具体实现编程。这里所说的抽象和接口与C++的多态性密切相关。C++的多态分为静态多态(编译时多态)和动态多态(运行时多态)两大类。静态多态通过重载、模板来实现;动态多态就是通过本文的主角虚函数来体现的。虚函数是C++语言一个非常重要的特性,不同编译器对此特性的实现机制也略有差别,虽然具体实现细...原创 2019-05-30 09:26:52 · 334 阅读 · 0 评论 -
C/C++学习 ---- void及void指针含义的深刻解析
原文转载自:http://blog.csdn.net/geekcome/article/details/62491511. void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。2. void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int * pint;void *p...转载 2014-03-10 18:11:49 · 1399 阅读 · 0 评论 -
C/C++时间函数的使用
转载自:http://blog.csdn.net/apull/article/details/5379819一、获取日历时间 time_t是定义在time.h中的一个类型,表示一个日历时间,也就是从1970年1月1日0时0分0秒到此时的秒数,原型是: typedef long time_t; /* time value */ 可以...转载 2015-03-16 16:36:06 · 852 阅读 · 0 评论 -
【C++ - 14】位运算求解两个数的平均值
1. 给定两个数x和y,朴素算法求解两个数的平均值是(x+y)/2,但是这种方法有个问题就是当x和y的和溢出的时候得到的平均值是错误的,我们可以采用位运算来解决这个问题。 一般对于x和y不大的时候,利用(x+y) >> 1可以得到两个数的平均值 对于一个数a,a << n表示的是a*2^n;a >> n表示的是a/2^n2. ...原创 2014-05-27 15:17:48 · 2701 阅读 · 0 评论 -
【C++ - 15】位运算求解一个整数的二进制中1的个数
法一:#include<iostream>#include<algorithm>using namespace std;int Count(int x){ int ans = 0; while(x != 0){ ++ans; x = x&(x-1); } return ans;}int main(){...原创 2014-05-27 15:31:24 · 2469 阅读 · 0 评论 -
【C++ - 16】判断操作系统是16位还是32位
法一:利用sizeof可以使用sizeof计算int的字节长度来判断是32位还是16位。32位机器下:sizeof(int) = 4;16位机器下:sizeof(int) = 2但是实际中可能64位的机器sizeof(int)也是4字节,因为很多时候是编译器决定要占用几个字节法二:利用最大值1. 机器位数不同则表示的数字的最大值是不同的。 32位机器下in...原创 2014-05-27 16:08:17 · 5454 阅读 · 0 评论 -
【C++ - 3】C/C++关键字之const
const是C和C++中常见的关键字,在C语言中主要用来定义常量和修饰函数的参数和返回值,在C++中还可以用来修饰类的成员函数等一. 什么情况下使用const关键字?1. 修饰常量,比如const int MAXN = 10 或者 int const MAXN = 10;或者修饰常量数组const int ARR[2] = {1,2}; 编译器通常不会为常量分配内存空间,而...原创 2014-05-24 11:56:34 · 929 阅读 · 0 评论 -
【C++ - 2】C/C++关键字之static
static是静态的意思C语言中static的作用1. 在函数体内,静态变量具有“记忆”的功能,即在函数体内部一个被声明为静态的变量在函数的调用过程中值是不变的,初始化只会被执行一次2. static全局变量和全局函数只能被本程序的函数所使用,不能被其它文件使用。一般的全局变量和全局函数可以被项目其它文件所使用3. static变量,不论是全局static变量还是static局部变...原创 2014-05-24 10:30:28 · 1741 阅读 · 0 评论 -
【C++ - 6】一个C/C++程序内存分配形式
一:一个C/C++程序编译之后在内存中一般分为五个部分1. 程序代码区:程序代码区主要用来存放程序执行代码,包括类成员函数、全局函数、静态函数等其它函数的代码。这部分内存区域的大小在程序运行前就已经确定了,并且内存通常是只读的。一般程序代码区是可以被共享的2. 常量区:用来存放常量的内存区域,程序结束后由操作系统收回3. 全局数据区(静态存储区):存放全局变量和静态变...原创 2014-05-24 16:44:04 · 1099 阅读 · 0 评论 -
【C++ - 5】new delete和 malloc free的区别
1. 在C++中申请动态内存与释放动态内存用new delete和malloc free都可以,并且new与malloc申请的内存空间位于堆区,无法被操作系统自动回收,需要手动delete 或 free来释放2. new delete是C++中的一种运算符,malloc和free是C、C++中一种标准库函数,在C语言中需要用头文件#include<stdlib.h>支持。对于...原创 2014-05-24 14:37:01 · 1832 阅读 · 0 评论 -
【C++ - 30】C++ auto_ptr智能指针的用法
文章转载自:http://blog.csdn.net/monkey_d_meng/article/details/5901392C++中指针申请和释放内存通常采用的方式是new和delete。然而标准C++中还有一个强大的模版类就是auto_ptr,它可以在你不用的时候自动帮你释放内存。下面简单说一下用法。用法一:std::auto_ptr<T>m_ex...转载 2015-05-15 23:12:37 · 1590 阅读 · 0 评论 -
【C++ - 17】指针常量、常量指针、指向常量的指针常量
指针常量、常量指针、指向常量的指针常量,这三个概念让很多人感到拗口,不好记住。但是只要你仔细研究,其实也就这么回事。一. 指针常量1. 所谓的指针常量指的是指针是一个常量,也就是常指针,和我们平时说的常量一样,指针指向的内存空间的地址是无法改变的2. 声明一个指针常量 int* const p = &a,定义一个指针p并且该指针是常量只能指向变量a。记住指针常量只能...原创 2014-05-28 09:08:09 · 1107 阅读 · 0 评论 -
【C++ - 9】C++中野指针和空指针和无类型指针
一. 野指针所谓的野指针指的是一个指针变量指向了不可使用的内存空间。产生野指针三个原因:(1)指针变量创建时候没有被初始化:任何指针变量在创建的时候,不会自动成为NULL指针,它的默认值是随机的,因此该指针就会成为一个野指针,可能指向一块不可使用的内存空间。 例如char *p; 这样创建一个指针p,指向一个随机的内存地址空间 所以指针在...原创 2014-05-26 10:00:37 · 3577 阅读 · 0 评论 -
【C++ - 8】C++中引用和指针的区别
1. 引用其实就是一个别名,它用于定义一个变量共享另一个变量的内存空间,变量是内存空间的名字,如果给内存空间起另外一个名字,就能够共享这个内存。2. 指针则是指向一个内存空间的变量,可以通过指针来查看某个内存空间的内容,而指针本身在32位机器下占据4个字节的空间指针和引用的区别有以下几个方面(1)指针是一个存放变量地址的变量,它可以被改变即可以指向不同的地址空间; ...原创 2014-05-26 09:24:24 · 962 阅读 · 0 评论 -
【C++ - 4】字符指针和字符数组的使用区别
先看一个程序代码#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int main(){ char str1[] = "abc"; char str2[] = "abc"; char *str...原创 2014-05-24 12:33:56 · 1136 阅读 · 0 评论 -
【C++ - 13】C/C++中struct研究
一. C和C++中struct的区别C语言中struct是用户自定义的数据类型,它是没有权限设置的,它只能是一些变量的集合体,虽然可以封装数据但是不能够隐藏数据,而且成员也不可以是函数。C++中struct是抽象数据类型,它支持成员函数的定义,并且有访问权限,C++中struct默认访问权限是public。主要区别有以下三点1. C语言中struct不能有成员函数,而C++中...原创 2014-05-27 13:04:14 · 1273 阅读 · 0 评论 -
【C++ - 12】C++中宏定义和内联函数区别
一、宏定义和内联函数的区别1. 宏定义不是函数,但是使用起来像函数。预处理器用复制宏代码的方式代替函数的调用,省去了函数压栈退栈过程,提高了效率。 内联函数本质上是一个函数,内联函数一般用于函数体的代码比较简单的函数,不能包含复杂的控制语句,while、switch,并且内联函数本身不能直接调用自身。如果内联函数的函数体过大,编译器会自动的把这个内联函数变成普通函数。...原创 2014-05-27 00:45:27 · 7713 阅读 · 0 评论 -
【C++ - 11】#define和typedef的区别
typedef和#define都是替一个对象取一个别名,来增强程序的可读性,但是它们有以下几个区别1. 原理不同 (1)#define是C语言中定义的语法,它是预处理指令,在预处理的时候进行简单的字符串替换,不作任何的正确性的检查,不管是否正确照样带入替换,只有在编译的时候才会发现错误并报错 (2)typedef是关键字,在编译的时候处理,所以typedef是有类型检查的...原创 2014-05-26 23:40:12 · 1089 阅读 · 0 评论 -
【C++ - 10】C/C++中#define的探究
一. #define简介1. #define命令是宏定义命令,主要在预编译的时候进行字符替换,把宏名用宏体进行替换2. 预编译的主要工作主要是进行代码文本的替换工作,用于处理#开头的指令,包括#Include、#define、#ifdef、#endif等等,预编译的工作只是纯粹的替换与展开,没有任何的计算功能二. #define命令的缺陷1. 无法进行类型检查。宏定义是...原创 2014-05-26 22:47:13 · 1310 阅读 · 0 评论 -
【C++ - 28】揭秘rand()函数
转载自: http://www.cnblogs.com/ngnetboy/archive/2012/11/23/2784078.html相信只要是程序猿都会知道rand()函数是用来取随机数的一个库函数,但是它出的结果真的是一组随机数吗?我们来看看这段代码运行的结果: 1 #include<stdio.h> 2 #include<stdlib.h> 3 i...转载 2015-04-09 17:32:52 · 1052 阅读 · 0 评论 -
【C++ - 21】局部变量和全局变量的区别
局部变量可以与全局变量重名,但是局部变量会屏蔽全局变量。要使用全局变量,需要使用::。在函数体内引用变量会用到同名的局部变量而不是全局变量,对于一些编译器来说,在同一个函数体内可以定义多个同名的局部变量。例如我们可以在一个函数内部,在两个循环中都定义同名的局部变量i,而局部变量i的作用域在那个循环体内 具体来说,全局变量和局部变量的区别如下:1. 作用...原创 2014-05-29 09:20:47 · 54748 阅读 · 5 评论 -
【C++ - 20】C/C++中全局变量和静态变量的区别
1. 全局变量的作用域是整个项目,它只需要在一个源文件中定义就可以作用于所有的源文件,其它不包括全局变量定义的文件需要用extern关键字再次声明这个全局变量。2. 全局变量、静态全局变量、静态局部变量都是在静态存储区(全局数据区)中分配空间的,而局部变量是在栈上分配空间的。3. 全局变量、静态变量的生命期和程序生命期是一样的,在程序结束之后操作系统会回收空间。...原创 2014-05-28 22:21:36 · 5189 阅读 · 0 评论 -
【C++ - 18】C++函数参数传递三种方式
当进行函数调用的时候,要填入与函数形式参数个数相同的实际参数,在程序运行的过程中,实参会将参数值传递给形参,C++函数参数传递有以下三种方式。一. 值传递1. 利用值传递方式,实际上是把实参的内容复制到形参中,实参和形参是存放在两个不同的内存空间中。在函数体内对形参的一切修改对实参都没有影响2. 如果形参是类的对象,利用值传递的话每次都要调用类的构造函数构造对...原创 2014-05-28 10:04:52 · 14924 阅读 · 0 评论 -
【C++ - 7】strlen和sizeof的区别
1. strlen是库函数,用来计算一个字符串的长度。从字符串的开头开始扫描,直到碰到第一个‘\0'字符为止,然后返回字符串的长度2. sizeof是C/C++中的关键字,用来计算某一个类型或变量占用多少字节内存空间。strlen与sizeof主要区别如下:1. strlen是函数,sizeof是关键字2. sizeof操作符的结果类型是size_t,它在头文件中typ...原创 2014-05-24 19:12:33 · 1888 阅读 · 0 评论