C++指针需要知道的小细节

一、定义和赋值一个普通对象

int ival = 1024;

如上述代码所示,将ival定义为一个int对象,并给予初始值1024。

二、指针对象的声明

int *pi;

1、如上述代码所示,当定义/声明某个特定类型的指针时,要在类型名称后加一个*号。

2、在这里,pi是int类型对象的指针。

三、指针的初始值

int *pi = &ival;

如上述代码所示,若希望取得对象所在的内存地址而非对象的值,应在对象前加一个取址运算符&。

四、提领操作(dereference)

if (*pi != 1024) // 读取ival的值
{
	*pi = 1024; // 写值到ival中
}

1、如上述代码所示,如果要访问一个由指针所指的对象,必须将该指针进行提领操作。(就是取得位于该指针所指内存地址上的对象)

五、指针的双重性质

1、操作指针包含的内存地址。(pi)

2、操作指针所指的对象值。(*pi)

六、指针最需要注意的点

1、声明一个指针时,可能会(也可能不会)使指针不指向任何一个对象,从而发生报错。

2、pi定位到某个对象,则对pi提领(dereference)不会出错。

3、pi没有指向任何对象,则提领pi会导致未知的执行结果。

4、以上,在使用指针时,必须在提领前确定这个指针指向某个对象,代码如下:

// 初始化指针pi,使它不指向任何对象。
// 任何指针都可以被初始化或是令它为0。
int *pi = 0; // 地址为0代表不指向任何指针,有时我们把它称为null指针。

// 为了防止null指针的提领操作,如下if语句可以检验pi所持有的地址是否为0
if (pi && *pi != 1024)
	*pi = 1024;

5、检验指针是否为null(未指向任何对象)

if(!pi) // pi为0时,取反,在下面代码块中将pi指向一个对象,使其不为0。
{
	// 代码
}
posted @ 2023-05-31 22:12  顺心无忧  阅读(57)  评论(0编辑  收藏  举报