1、空指针不指向任何对象, int * p1 = nullptr;初始化空指针
把int变量直接赋给指针是错误的操作,即使int变量的值恰好等于0也不行。
指针和引用区别:引用并非一个对象,对引用的所有操作都是对引用所绑定的对象进行的;而指针不同,给指针赋值就是令它存放一个新的地址,令其指向一个新的对象。
2、赋值永远改变是等号左侧的对象
pi = &val; //pi的值被改变,现在pi指向val即改变了存放在pi内的地址值
*pi = 0; //val的值被改变,pi的指向(也就是地址值)没有变,改变的是pi指向的那个对象的值。
3、void* 指针可以存放任意对象的地址,但具体什么类型对象并不了解。
void* p = &i;是合法的
4、复合类型的声明
int* p1,p2; //p1是指向int的指针,p2是int
避免出错,对于指针或引用的声明,一般每条语句只定义一个变量
5、指向指针的指针
声明符中修饰符的个数并没有限制(如下:int称变量标识符,*称修饰符)
int ival = 1024;
int *pi = &ival; //pi指向一个int型对象
int **pi = π //ppi指向int型指针
它们关系如下: ppi——>pi——>1024
ival = *pi = **pi
6、指向指针的引用
int i = 42;
int *p ; //p是一个int型指针
int *&r = p; //r是一个引用,是对指针的引用,引用的是一个int型指针(从右往左解读,离变量名最近的符号对变量名有最直接的影响)
r = &i; //给r赋值&i(地址),因为r引用的是一个指针,即另p指向i
*r = 0; //解引用r得到i,p所指向的对象,将i的值置0
C++primer 指针(二)
最新推荐文章于 2021-05-22 11:34:20 发布