指针和const限定符

xiaoxiao2021-02-28  146

1、指向const对象的指针

      const double *cptr;

      const double pi = 3.14;

      cptr = π

注:1、C++语言强制要求指向const对象的指针也必须具有const特性。

       2、不能使用void*指针保存const对象的地址,必须使用const void*类型的指针保存const对象的地址。

       3、允许把非const对象的地址赋给指向const对象的指针。

       4、不能使用指向const对象的指针修改基础对象,如果该指针指向的是一个非const对象,可用其他方法修改其所指的对象,比如直接给该对象赋值,或间接地用普通的非const指针修改其值。

       5、在实际的程序中,指向const对象的指针常用作函数的形参。将形参定义为指向const对象指针,以此确保传递给函数的实际对象在函数中不因形参而被修改。

2、const指针

      int errNumb = 0;

      int *const curErr = &errNumb;

注:1、不能使curErr指向其他对象

       2、指针所指对象的值能否修改完全取决于该对象的类型。

3、指向const对象的const指针

      const double pi = 3.14159;

      const double *const pi_ptr = π

注:既不能修改pi_ptr所指向对象的值,也不允许修改该指针的指向(即pi_ptr中存放的地址值)。

4、指针和typedef

      typedef string *pstring;

      const pstring cstr;

注:申明const pstring时,const修饰的是pstring的类型,pstring是一个指针,指向string类型对象。因此,该申明语句是把cstr定义为指向string类型对象的const指针。 等价于:string *const cstr;

转载请注明原文地址: https://www.6miu.com/read-50016.html

最新回复(0)