1.运算符*与&的作用是什么?
*称为指针运算符,是一个一元操作符,表示指针所指向的对象的值;&称为取地址运算符,也是一个一元操作符,是用来得到一个对象的地址。
2.什么叫作指针?指针中储存的地址和这个地址中的值有何区别?
指针是一个数据类型,具有指针数据的变量称为指针变量。指针变量存放的是另外一个对象的地址,这个地址中的值就是另一个对象的内容。
3.引用和指针有何区别?何时只能使用指针而不能使用引用?
引用是一个别名,不能为NULL值,不能被重新分配;指针是一个存放地址的变量。当需要对变量重新赋以另外的地址或赋值为NULL时只能使用指针。
4.两种指针的区别
const int *p1;//声明了一个指向整型常量的指针p1,因此不能通过指针p1来改变它所指向的整型值//
int *const p2;//声明了一个指针型的常量,用于存放整型变量的地址,这个指针一旦初始化后,就不能被重新赋值了//
5.static_cast、const_cast和reinterpret_cast各自应在哪些情况下使用?
static_cast运算符实现类型间的转换,但没有运行时类型检查来保证转换的安全性。
const_cast运算符用来修改类型的const或volatile属性。可以去除对象或者变量的const或volatile属性。
reinterpret_cast可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针。