随笔分类 -  C/C++基础知识汇编

C/C++基础知识总结
摘要:重载操作符是个好青年,但是要吐槽的是,我们时常为了重载操作符编写许多重复的代码。这是枯燥的,但是也是必须的。你重载的越多,你的类的弹性就越大。但是,你也不能为所欲为。玩游戏总是遵守相应的规则,写重载操作符亦是如此! 以下是要遵守的游戏规则: 一元操作符可以是不带参数的成员函数或带一个参数的非成员函数。 二元操作符可以是带一个参数的成员函数或带两个参数的非成员函数。... 阅读全文
posted @ 2012-03-15 17:13 云端小飞象cg 阅读(4009) 评论(4) 推荐(6) 编辑
摘要:使用C/C++的苦逼娃们经常深陷内存越界错误,资源泄漏错误等等问题,而且这样的惨剧每时每刻都在这个世界上重复的发生着。其实,我也是苦逼娃!也为了个神马越界的东西debug了整个下午过,为此也想砸电脑过。最后想想,其实不是C/C++苦逼,是我们的不小心而造成如此的苦逼。罪过,罪过。。。 在C语言库中,提供了这么两个函数,malloc和free,分别用于执行动态内存分配和释放。两个函... 阅读全文
posted @ 2012-03-10 17:37 云端小飞象cg 阅读(2471) 评论(5) 推荐(6) 编辑
摘要:不知不觉,指针解析来到了第三篇。本篇想讲的内容是有点高级,也有晦涩。说到高级和晦涩,有些人就不同意了。不就些基础内容嘛,何必用高级一次呢?我想我是假借高级一词,重点在“有点”。我倒不能说有点猥琐,有点恶心吧。 我们都知道,程序中的每个函数都位于内存的某个位置上,所以就存在指向那个位置上的指针。知道了这个道理之后呢,我们来看看以下这些声明是怎么一回事?int f; // 整型变量,这个鬼都知道int *f; // 一个指向整型的指针,这个鬼也知道int f(); // 返回类型为整型的函数int *f(); // 返回类型为一个指向整型指针的函数// 以上都很平... 阅读全文
posted @ 2012-03-03 03:56 云端小飞象cg 阅读(1495) 评论(8) 推荐(4) 编辑
摘要:我们在看一些开源的源代码的时候,经常会看到如下情景:# if defined(_PTHREADS) && !defined(_NOTHREADS)# define __STL_PTHREADS# endif# if defined(_UITHREADS) && !defined(_PTHREADS) && !defined(_NOTHREADS)# define __STL_UITHREADS# endif# if defined(__sgi) && !defined(__GNUC__)# include <standard 阅读全文
posted @ 2012-03-02 20:26 云端小飞象cg 阅读(8728) 评论(6) 推荐(5) 编辑
摘要:内容接上一篇,以下是答案: 1. &ch 代表什么? 答:变量ch的地址 2. pch 代表什么? 答:pch是char类型指针,指向ch。 3. &pch 代表什么? 答:指针变量的地址 4. *pch 代表什么? 答:对指针变量pch进行解引用,间接访问了ch的值。 5. *pch + 1 代表什么? 答:间接访问操作,取得的拷贝值加一,(*pch + 1)为‘b’。 6. *(pch + 1)代表什么? 答:访问到了ch之后的下一个地址上的内容。 7. ++pch 代表什么? 答:假设当为右值,那么应该是先递增,后传地址。 8. *++pch 代表什么? 答:假设当为右值 阅读全文
posted @ 2012-02-27 13:29 云端小飞象cg 阅读(1540) 评论(11) 推荐(6) 编辑
摘要:指针这个话题好沉重,思量了好久,不知道如何下笔?下笔的时候手好抖啊,各位大牛看到我这只小菜鸟写的东东可能会笑掉大牙,但是,不管了!我要写下来!!!这东东确实太重要了,无数人对其折腰,无数的bugs隐匿于此。对它是又爱,又痴,又疼,又牙痒痒。有些看官以为我会写“又恨”,说实话,我和指针无仇,我敬佩它,崇拜它。它要是女生,我立马娶它。 我想指针的话题应该可以分成以下几个部分: ... 阅读全文
posted @ 2012-02-26 02:06 云端小飞象cg 阅读(2241) 评论(16) 推荐(5) 编辑
摘要:(一)基本概念 结构体是一个或是多个变量的集合,这些变量可能为不同的类型,为了处理的方便而将这些变量组合在一个名字之下。我们将关键字struct引入了结构声明中。结构声明包含在花括号内的一系列声明组成。例如: // 以下是一个巨普通的结构体,表示坐标。 // point 为结构标记;x, y为成员。 struct point { int ... 阅读全文
posted @ 2012-02-22 23:32 云端小飞象cg 阅读(4144) 评论(5) 推荐(5) 编辑
摘要:(一)基本概念 void 类型:空类型,用于特殊目的的没有操作,也没有值的类型。不能被显式或隐式的转换为任意非空类型,可以通过强制类型转换为void类型。 void指针:指向任何对象的指针都可以转换为void*类型指针,且不会丢失信息。在ANSI C使用类型void*代替char*作为通用指针的类型。 (二)使用方法 1. void的使用 第一种是:对函数返回的限定 ... 阅读全文
posted @ 2012-02-22 14:55 云端小飞象cg 阅读(7270) 评论(6) 推荐(1) 编辑
摘要:(一)小数点输出精度 有时,为了输出一个满意的小数点,经常搞的手忙脚乱的。这个东西十分的基础,但是又不是经常用到,所以有时要使用的时候都会要查阅一番。 首先添加#include<iomanip>,然后再完成以下的操作。1、输出n个有效数字double a = 3.1415926, b = 22.3334453;cout.precision(6); //说明要输出6个有效数字,不包含小数点cout << a << endl << b;2、输出n个小数点之后的数字 现在,我想要输出 3.1415926 和 22.3334453的数字,不管小数点前面有 阅读全文
posted @ 2012-02-08 10:23 云端小飞象cg 阅读(2005) 评论(1) 推荐(1) 编辑
摘要:(一)变长一维数组 这里说的变长数组是指在编译时不能确定数组长度,程序在运行时需要动态分配内存空间的数组。实现变长数组最简单的是变长一维数组,你可以这样做: 1: //文件名: array01.cpp 2: #include<iostream> 3: using namespace std; 4: int main() 5: { 6: int len; 7: cin >> len; 8: //用指针p指向new动态分配的长度为len*sizeof(int)的内存空间 ... 阅读全文
posted @ 2012-02-07 22:33 云端小飞象cg 阅读(2491) 评论(0) 推荐(1) 编辑
摘要:argc记录了用户在运行程序的命令行中输入的参数的个数。 arg[]指向的数组中至少有一个字符指针,即arg[0]通常指向程序中的可执行文件的文件名。 例如: int main(int argc, char* argv[]) { int i; for(i = 0; i < argc; i++) ... 阅读全文
posted @ 2012-02-04 11:40 云端小飞象cg 阅读(1236) 评论(1) 推荐(1) 编辑
摘要:(一)基本概念 sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 (二)使用方法 1、用于数据类型 sizeof使用形式:sizeof(type) ,如sizeof(int) 2、用于变量 sizeof使用形式:sizeof(var_name)或sizeof var_na... 阅读全文
posted @ 2012-02-02 12:43 云端小飞象cg 阅读(1175) 评论(7) 推荐(1) 编辑
摘要:一:C语言中的内存机制在C语言中,内存主要分为如下5个存储区:(1)栈(Stack):位于函数内的局部变量(包括函数实参),由编译器负责分配释放,函数结束,栈变量失效。(2)堆(Heap):由程序员用malloc/calloc/realloc分配,free释放。如果程序员忘记free了,则会造成内存泄露,程序结束时该片内存会由OS回收。(3)全局区/静态区(Global Static Area): 全局变量和静态变量存放区,程序一经编译好,该区域便存在。并且在C语言中初始化的全局变量和静态变量和未初始化的放在相邻的两个区域(在C++中,由于全局变量和静态变量编译器会给这些变量自动初始化赋值,所 阅读全文
posted @ 2012-02-01 17:22 云端小飞象cg 阅读(8701) 评论(0) 推荐(5) 编辑