![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++ 基础
Stone_Sky
这家伙很懒,什么都不想写~
展开
-
void及void指针(C/C++语言)
引:许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。 1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技转载 2012-02-23 14:52:59 · 716 阅读 · 0 评论 -
C++程序内存布局
C++程序内存布局探讨(一)刘昕 重庆大学软件学院摘要:本文探讨了C++程序内存布局的基础知识,对堆、栈、全局数据区和代码区的概念进行了简单介绍,并介绍了内存对齐和进程地址空间(虚拟内存)方面的知识。今天一大早起来,收到外校的同学传给我的一道C++面试题,该公司做Windows平台下的C++开发。面试题有一道考C++程序内存布局,很具有代表性。已知有这样一段代码:转载 2012-03-09 13:55:34 · 1893 阅读 · 0 评论 -
字节序及对堆栈的影响
何为大端序,小端序?简单点说,就是字节的存储顺序,如果数据都是单字节的,那怎么存储无所谓了,但是对于多字节数据,比如int,double等,就要考虑存储的顺序了。注意字节序是硬件层面的东西,对于软件来说通常是透明的。再说白一点,字节序通常只和你使用的处理器架构有关,而和编程语言无关,比如常见的Intel x86系列就是小端序。Big-endian(大端序)数据的高位字节存放在地址的低端转载 2012-07-24 11:21:37 · 2167 阅读 · 0 评论 -
C,C++可变长参数实现
转帖地址1:http://www.cnblogs.com/CUCmehp/archive/2008/12/18/1357438.html转帖地址2:http://blog.csdn.net/cnsword/article/details/8022729~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~转:C/C++变长参数的实现很多技术人员都有转载 2013-12-02 23:57:53 · 1351 阅读 · 0 评论 -
函数名+函数指针+指针常量+字符串常量
指针常量【截图取自《C陷阱与缺陷》2.1节】尝试解析下面函数调用语句的含义【本书中有详细解释】: (*(void(*)())0)();~~~~~~~~~~~~~~~~~~~~~~~~~~~~割了吧~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~函数名与函数指针转自:http://hi.baidu.com/bellgrade转载 2013-10-30 11:26:09 · 1176 阅读 · 0 评论 -
c/c++中int main(int argc,char *argv[])的具体含义
int main(int argc,char * argv[])argv为指针的指针argc为整数char **argv or: char *argv[] or: char argv[][]main()括号内是固定的写法。下面给出一个例子来理解这两个参数的用法:假设程序的名称为prog,当只输入prog,则由操作系统传来的参数为:argc=1,表示只有一转载 2012-02-23 16:37:55 · 1731 阅读 · 0 评论 -
c++中的类型转换
有的时候,我们可以使用显式转换(又称强制类型转换),明确地告知编译器:这种转换正是程序所期望的,请不要再出现啰嗦的警告,如下:short s2 = (short)100000; //ok 显示转换的语法如下:(类型)表达式; 类型(表达式); (类型)(表达式); 也就是说,如下3种形式都可以:s2 = (short)100000; //ok s2 = short(100转载 2012-03-09 10:22:48 · 767 阅读 · 0 评论 -
cout<<char数组名/数组指针"跟"cout<<int数组名/数组指针"的差别
原帖地址:http://topic.csdn.net/u/20100625/21/a4a9576e-948b-4518-8e34-6477265de74d.html问题:# include "iostream.h"int main(){int a[]={1,2,3,4,5};char b[]={'h','e','l','l','o','\0'};coutcout转载 2012-02-23 17:31:15 · 5431 阅读 · 0 评论 -
Windows操作系统中栈和堆的区别
关于内存中栈和堆的区别(非数据结构中的堆和栈,区别)1、内存分配方面: 堆:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式是类似于链表。可能用到的关键字如下:new、malloc、delete、free等等。 栈:由编译器(Compiler)自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类转载 2012-03-27 10:15:59 · 963 阅读 · 0 评论 -
位操作符
按位操作符按位操作符用来操作整数基本数据类型中的单个bit,即二进制位。按位操作符对两个参数中对应的位执进行布尔代数运算。位操作符 Operator Use Operation & op1 & op2 运算op1和op2;如果op1和op2都是布尔值,而且都等于true,那么返回true,否则返回fal转载 2012-03-09 11:34:29 · 1096 阅读 · 0 评论 -
C/CPlusplus基础
1. C++初始化类成员时,是按照声明的顺序初始化的,而不是按照出现在初始化列表中的顺序。转载 2015-01-08 15:40:56 · 643 阅读 · 0 评论 -
虚函数实现原理(转)
前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我转载 2015-03-06 08:56:33 · 499 阅读 · 0 评论 -
C++函数名称修饰规律例解【之一】【原创qduwg】
C++函数名修饰编码规则-------------------------------2010年8月19日qduwg原创下面是总结的对C++名字修饰的一些规则,通过大量的实验搞出的。其中需要在VC内写一个小程序,然后通过单步调试,可以看出其编码规则,也可以使用cl /Fc /c xx.cpp方法编译你的cpp文件,得到一个xx.COD文件,在那里也可以看到修饰后的名字及汇编代码等。转载 2013-08-28 08:47:00 · 994 阅读 · 0 评论 -
C/C++异常处理机制
C++为什么抓不到除0错“异常”? 1.C语言异常处理 1.1 异常终止 标准C库提供了abort()和exit()两个函数,它们可以强行终止程序的运行,其声明处于include include include include include include include include ifdef NDEBUGdefine assert(exp) ((void)0)elseifdef转载 2016-03-30 15:03:42 · 776 阅读 · 0 评论 -
static
1C++中简介C#与C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。面向过程的static静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下:?1转载 2013-11-08 09:35:45 · 743 阅读 · 0 评论 -
CString,string,char*,char[],GetBuffer(int)
char c='A'; char szCr[]="ABC";char *p和char p[]??? 参阅:http://topic.csdn.net/u/20080608/21/12a02aab-ce19-4e9c-8e75-6f09da4144f3.html============================================std-string、转载 2012-04-26 10:08:35 · 2690 阅读 · 0 评论 -
VS2005远程调试攻略
怎么说呢,介绍远程调试的文章网络上其实有不少,我这里也会涉及到,但会更加的详细和细致,比如win7(32、64)系统下的调试,家庭版的调试,以及一些常见问题的原因和解决办法。一般我们都会这么操作,比如在VISTA之前的系统如,2K, XP, 2003下(这里都是32位):(1) 远程端:安装VS2005光盘"vsRemote Debuggerx86 dbgsetup.exe"。或者直接转载 2013-11-08 12:36:25 · 1215 阅读 · 0 评论 -
C++程序栈溢出
最近拿到一段程序,还是让俺DEBUG,命苦啊,是栈溢出,编译链接成功,运行时报错。这位MM在一彩色图片多分辨率处理程序中将一副1024*1024大小的彩色图片的RGB分量存入三个数组,数组在栈上分配的,即形如int ImageDataR[1024][1024] 这种形式,然后呢,你猜,栈溢出程序挂了(说明一下,这个程序只处理大小为1024*1024大小的图片,据说是统一的图片大小和格式要求)。转载 2012-03-09 13:47:49 · 2494 阅读 · 0 评论 -
屏蔽控制台应用程序的窗口
屏蔽控制台应用程序的窗口#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")众所周知,控制台应用程序一般都会显示一个控制台窗口(虚拟DOS窗口),但很多时候控制台程序的执行逻辑根本不需要与用户进行交互,所以显示这个难看的窗口纯属多余,那么如何将它屏蔽掉呢?下面我向大家介绍一种方法。 操作系统装载应用程序转载 2012-03-15 14:16:44 · 943 阅读 · 0 评论 -
C++拷贝构造函数(深拷贝,浅拷贝)
C++拷贝构造函数(深拷贝,浅拷贝) 转自:http://www.cnblogs.com/BlueTzar/articles/1223313.html对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#include using n转载 2012-12-04 15:47:23 · 1092 阅读 · 0 评论 -
#pragma命令详解
每种C和C++的实现支持对其宿主机或操作系统唯一的功能。例如,一些程序需要精确控制超出数据所在的储存空间,或着控制特定函数接受参数的方式。#pragma指示使每个编译程序在保留C和C++语言的整体兼容性时提供不同机器和操作系统特定的功能。编译指示被定义为机器或操作系统特定的,并且通常每种编译程序是不同的。语法:#pragma token_string“token_string”是一系列转载 2013-08-02 12:06:20 · 986 阅读 · 0 评论 -
函数名字修饰(Decorated Name)方式
函数名字修饰(Decorated Name)方式 函数的名字修饰(Decorated Name)就是编译器在编译期间创建的一个字符串,用来指明函数的定义或原型。LINK程序或其他工具有时需要指定函数的名字修饰来定位函数的正确位置。多数情况下程序员并不需要知道函数的名字修饰,LINK程序或其他工具会自动区分他们。当然,在某些情况下需要指定函数的名字修饰,例如在C++程序中,为了让LIN转载 2013-08-02 13:41:45 · 1686 阅读 · 0 评论 -
函数调用约定与区别
在调用成员函数之前,必须先把参数压到栈中,然后再进入成员函数中,成员函数依次把参数从栈中取出来,在函数返回之前或返回之后,必须恢复栈的当前位置,才能保证程序的正常运行。几种函数调用方式 __cdecl 是C Declaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递转载 2012-08-22 16:36:34 · 794 阅读 · 0 评论 -
C++ 11 Lambda表达式
C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda的语法形式如下: [函数对象参数] (操作符重载函数参数) mutable或exception声明 ->返回值类型 {函数体} 可以看到,Lambda主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable或exception声明、->返回值类型转载 2013-08-28 11:02:23 · 745 阅读 · 0 评论 -
const
const在函数前与函数后的区别 一 const基础 如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况: int b = 500; const int* a = &b; [1] int const *a = &b; [2] int转载 2013-10-29 13:24:09 · 670 阅读 · 0 评论 -
0,'\0','0'
#include using namespace std;int main(void){ cout<<__FILE__<<'\t'<<__LINE__<<endl; cout<<"内 容:\t"<<"0"<<'\t'<<"\\0"<<'\t'<<"\'0\'"<<endl; cout<<endl; cout<<"显示结果:\t"<<0<<'\t'<<'\0'<<'\t'<原创 2013-10-30 14:15:09 · 839 阅读 · 0 评论 -
C++ 类的概念
《effective C++》第三版~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~转载 2013-11-16 10:31:18 · 943 阅读 · 0 评论 -
RAII
http://baike.baidu.com/link?url=DUGlzCMqyZ2aInTkdpGWqW0f53fL-LWLu9nD3rGoJClIUb8rssh8oCALOhad7MDAWkqEhdfUzPU72jvQeDx5KK目 录1RAII简介2RAII的分类3RAII实际应用4RAII与STL容器1RAII简介RAII[1]转载 2013-11-16 15:56:50 · 1887 阅读 · 0 评论 -
C++ 拷贝构造函数 赋值构造函数
C++ 拷贝构造函数 赋值构造函数拷贝构造函数和赋值构造函数的异同由于并非所有的对象都会使用拷贝构造函数和赋值函数,程序员可能对这两个函数有些轻视。请先记住以下的警告,在阅读正文时就会多心:如果不主动编写拷贝构造函数和赋值函数,编译器将以“位拷贝”的方式自动生成缺省的函数。倘若类中含有指针变量,那么这两个缺省的函数就隐含了错误。以类String 的两个对象a,b 为例,假设a.m_data转载 2013-11-08 12:33:42 · 890 阅读 · 0 评论 -
C/C++异常处理
C++为什么抓不到除0错“异常”?1.C语言异常处理 1.1 异常终止 标准C库提供了abort()和exit()两个函数,它们可以强行终止程序的运行,其声明处于头文件中。这两个函数本身不能检测异常,但在C程序发生异常后经常使用这两个函数进行程序终止。下面的这个例子描述了exit()的行为:#include #include int main(void)转载 2016-03-30 15:13:07 · 964 阅读 · 0 评论