17.c/c++程序员面试宝典-指针概述
在c++中,很多程序员都痴迷于指针的运用,很多公司在招聘较高级职位的时候,也会考察到指针的相关知识,对指针的运用能看出程序员编写程序的严谨性。指针是用来控制对象的内存地址,它功能非常强大,可以直接访问和操作系统内存,合理地运用指针也会让程序的性能得到很好的优化。
在c++中,语言可以在运行时获得变量的地址,并且具有操作地址的能力。这种功能在其他的语言中可能都不如c++中如此重要,被用来操作变量地址的特殊类型的变量就是指针变量。指针可以用于数组,或者作为函数的参数,用来访问内存和对内存的操作。由于指针的作用,使得c++的功能非常强大,它可以使程序变得非常高效,但是指针使用起来又比较危险,使用不当会导致程序出现比较严重的问题。
面试题83 什么是指针***
分析:程序中的所有变量和常量都存在一个内存地址中。这个内存地址表示变量或者常量在内存中存储的位置,同样,函数也有对应的内存地址。内存地址的不同会导致程序执行时有所不同,指针就是用来存储内存地址的变量。
编程者所知道的所有基本数据类型,例如,int,float,double等,每一种基本数据类型都有相应的指针类型,编程者可以建立对应类型的指针来处理基本数据类型。
“*”在运算符中是表示乘法,它也被用来定义指针。指针变量的定义语句,由数据类型后跟星号,再跟指针变量名组成。定义指针的示例代码如下:
int *ip;
const int *ip2;
上面所示ip和ip2都是指针变量名,int表示该指针变量的类型是整型,*表示是指针变量。指向整型数的指针是包含该整型数地址的变量或常量。另外c++还提供了一种特殊的指针类型void*,它可以保存任何类型对象的地址。示例代码如下:
double obj=3.14;
double *pd=&obj; //double类型指针
void *pv=&obj; //void类型指针,在这里保存了double类型指针地址
pv=pd;
【答案】指针是用来存储内存地址的变量,它指向单个对象的地址,除了void指针类型以外,指针的数据类型与所指向地址的变量数据类型须保持一致。
面试题84 如何初始化指针并对其赋值****
分析:建立指针包括定义指针变量和给指针变量赋初值,第一次给指针变量赋值就是指针的初始化。用&符号可以获取变量的地址,指针变量用来存储变量的地址,基本的指针变量初始化示例代码如下: