C/C++
文章平均质量分 66
peixuan197
这个作者很懒,什么都没留下…
展开
-
C++ 中BSS、数据段、代码段、堆、栈的区别
BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点是:可读写的,在程序执行之前BSS段会自动清0。所以,未初始的全局变量在程序执行之前已经成0了。数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。代码段:代码段(code segment转载 2015-08-22 21:03:19 · 2393 阅读 · 1 评论 -
STL List容器详解
List 容器list是C++标准模版库(STL,Standard Template Library)中的部分内容。实际上,list容器就是一个双向链表,可以高效地进行插入删除元素。使用list容器之前必须加上头文件:#include;list属于std命名域的内容,因此需要通过命名限定:using std::list;也可以直接使用全局的命名空间方式:using name转载 2015-09-11 16:43:46 · 374 阅读 · 0 评论 -
static修饰的变量和函数与普通变量函数的区别
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能原创 2015-09-05 15:02:07 · 2106 阅读 · 0 评论 -
C++面试宝典2011版
1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之转载 2015-09-05 11:03:57 · 502 阅读 · 0 评论 -
继承关系中的虚函数表
首先我们从一道笔试题开始:class ClassA{public: virtual ~ ClassA(){}; virtual void FunctionA(){};};class ClassB{public: virtual void FunctionB(){};};class ClassC : public ClassA,public ClassB{原创 2015-09-04 16:59:53 · 908 阅读 · 0 评论 -
堆和栈的区别(经典)
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两转载 2015-09-05 11:31:05 · 329 阅读 · 0 评论 -
C++中的虚函数详解
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过转载 2015-09-04 16:56:13 · 439 阅读 · 0 评论 -
什么函数不能声明或定义为虚函数
一、首先回顾下什么是虚函数及其作用,以便更好理解什么函数不能声明或定义为虚函数:1. 定义:虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public,在基类的类定义中定义虚函数的一般形式: virtual 函数返回值类型 虚函数名(形参表) { 函数体 }2. 作用:虚函数的作用是实现动态联编,也就是在程序的运行阶段动态地选择合转载 2015-09-04 14:59:12 · 1669 阅读 · 0 评论 -
共用体中涉及的大端和小端存储模式
首先我们先理解一下什么是大端、小端模式,下面这边文章讲的很清楚,参考链接:http://blog.csdn.net/favory/article/details/4441361端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为原创 2015-09-09 15:28:59 · 1364 阅读 · 0 评论 -
c语言sizeof求结构体的大小
运算符sizeof可以计算出给定类型的大小,对于32位系统来说,sizeof(char) = 1; sizeof(int) = 4。基本数据类型的大小很好计算,我们来看一下如何计算构造数据类型的大小。C语言中的构造数据类型有三种:数组、结构体和共用体。数组是相同类型的元素的集合,只要会计算单个元素的大小,整个数组所占空间等于基础元素大小乘上元素的个数。结构体中的成员可以是不同的数据类型转载 2015-09-01 19:39:03 · 6502 阅读 · 1 评论 -
C++中的常量折叠问题
最近做了一道笔试题才发现了这个问题题目: const int a = 10;// 这这里声明的变量a 就会产生常量重叠。 int *p = (int *)&a; *p = 20; cout << "a= " << a << endl << "p= " << *p; return 0;那么大家想想正确的输出结果是什么?a= 10*p = 20为什么两个指向同一个地址原创 2015-08-31 15:11:55 · 1057 阅读 · 0 评论 -
C++ 单例模式详解
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。 单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做转载 2015-08-29 16:21:05 · 393 阅读 · 0 评论 -
void * 指针介绍
void类型及void指针1.概述 许多初学者对C/C 语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并 详述void及void指针类型的使用方法与技巧。 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 void几转载 2015-08-29 10:27:55 · 346 阅读 · 0 评论 -
memcpy 函数详解
原型:extern void *memcpy(void *dest, void *src, unsigned int count);用法:#include 功能:由src所指内存区域复制count个字节到dest所指内存区域。说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。举例: // memcpy.转载 2015-08-29 09:41:04 · 9128 阅读 · 0 评论 -
C++中随机函数rand()和srand()的用法
一、rand() 函数名: rand 功 能: 随机数发生器 用 法: int rand(void); 所在头文件: stdlib.h 函数说明 : rand()的内部实现是用线性同余法做的,它不是真的随机数,因其周期特别长,故在一定 的范围里可看成转载 2015-08-29 09:38:08 · 38514 阅读 · 2 评论 -
C++中const 详解
知识的学习在于对细节的深入理解,范范略知,时间一长也就不了了之了。这也是我写博客的初衷。原创 2015-09-06 17:04:11 · 510 阅读 · 0 评论