首页 / 软件开发 / C++ / 完整的学习C++的读书路线图(3)
完整的学习C++的读书路线图(3)2010-05-16指针无疑,指针是C中最精髓的部分,因为指针可以在初始化后,可以同时拥有所指变量的两样东西——值和地址。这就给我们写程序时很大的空间,可以直接与内存对话!这也同样引出了千奇百怪的错误,不知道该怎么表达,其实最根本的是要明白我们在使用指针的时候,知道我们使用的究竟是她的哪个性质!是值?还是地址?于此对应的,指针有两种最基本的操作:一个是取地址&,主要用于初始化时的赋值操作。&必须是左值。一个是取指向的值*,*可以取任意指向的值,返回其左值。对指针的操作犹如打太极一般,有很多招式,但又归于一招。最基础的是分清指针赋值和值赋值:p1=p2;指针赋值,是p1和p2指向同一位置。*p1=*p2;值赋值,把p2为地址的内存中的内容赋到p1为地址的内存的。注意:指针也是有地址的,它本身也需要在内存中开辟一块存储,这块存储空间里是他所指变量的地址,然后根据这个地址,可以找到所指变量的值!指针可以被运算,但要注意的是指针所指向对象的类型,指针都是一样的——4,而他的指向的解析方式是不同的,所以同样的形式会有不同的运算方法,如:p++,对于int型和对于double型所跨越的实际地址是不同的!指针和数组我们使用指针的时候,其作用和其他变量相似,可以把他的行为与基本类型划等号。但是如果是数组,就不同了,数组声明后保有很多内存单元,每个元素都有一个内存单元,数组名不与某个单独的内存单元相对应,而是和整个内存单元集合相对应,所以这一点和普通变量不同。当变量做最普通的声明时,会体现数组和指针最关键的区别:int array「5」;和int * p;内存的分配!这样指针是不分配内存的 ,但是数组分配!*//*一、文件包含#include <头文件名称>#include "头文件名称"第一种形式 : 用来包含开发环境提供的库头文件,它指示编译预处理器在开发环境设定的搜索路径中查找所需的头文件第二种形式 : 用来包含自己编写的头文件,它指示编译预处理器首先在当前工作目录下搜索头文件,如果找不到再到开发环境设定的路径中查找。内部包含卫哨和外部包含卫哨在头文件里面使用内部包含卫哨,就是使用一种标志宏,可以放心的在同一个编译单元及其包含的头文件中多次包含同一个头文件而不会造成重复包含。如:#ifndef _STDDEF_H_INCLUDED_#define _STDDEF_H_INCLUDED_…… //头文件的内容#endif当包含一个头文件的时候,如果能够始终如一地使用外部包含卫哨,可以显著地提高编译速度,因为当一个头文件被一个源文件反复包含多次时,可以避免多次查找和打开头文件地操作。如:#if !defined(_INCLUDED_STDDEF_H_)#include <stddef.h>#define _INCLUDED_STDDEF_H_#endif建议外部包含卫哨和内部包含卫哨使用同一个标志宏,这样可以少定义一个标志宏。如:#if !defined_STDDEF_H_INCLUDED_#include <stddef.h>#endif