C++ Null 指针

在变量声明的时候,如果没有确切的地址可以赋值,可以为指针变量赋一个 NULL 值,赋为 NULL 值的指针被称为指针。

NULL 指针是一个定义在标准库中的值为零的常量。请看下面的程序:

#include <iostream>

using namespace std;

int main ()
{
   int  *ptr = NULL;

   cout << "ptr 的值是 " << ptr ;
 
   return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

ptr 的值是 0

当然,在大多数的操作系统中,程序不允许访问地址为0的,因为内存是操作系统保留的,所以内存地址为0有的特别的重要的意义,它表明该指针不指向一个可访问的的内存位置,如果指针包含空值,就假定它不指向任何东西

C++指针的算数运算

指针是一个数值表示的地址,所以您可以对指针进行算术运算,可以对指针进行四种不同算术运算

++,--,+,-

在程序里,我们喜欢使用指针来代替数组,因为变量指针可以递增,而数组不可以,因为数组是一个常量指针,下面这个程序是

递增变量指针,用来顺序访问数组每一个元素:

#include <iostream>

using namespace std;

const int Max = 3;

int main()
{
    int var[Max] = {10,100,1000};
    int *ptr;

    ptr = var;
    for(int i = 0;i< Max; i++){
        cout << "Address of var[" <<i<<"] = ";
        cout << ptr << endl;
    
        cout <<"value of var [" << i << "] = ";
        cout <<*ptr << endl;
        
        ptr++;
    }

    return 0;

}

输出的结果是: 

Address of var[0] = 0x7ffe879961a0
value of var [0] = 10
Address of var[1] = 0x7ffe879961a4
value of var [1] = 100
Address of var[2] = 0x7ffe879961a8
value of var [2] = 1000

 递减一个指针

#include <iostream>

using namespace std;
const int MAX = 3;

int main ()
{
   int  var[MAX] = {10, 100, 1000};
   int  *ptr;

   ptr = &var[MAX-1];
   for (int i = MAX; i > 0; i--)
   {
      cout << "Address of var[" << i << "] = ";
      cout << ptr << endl;

      cout << "Value of var[" << i << "] = ";
      cout << *ptr << endl;

      ptr--;
   }
   return 0;
}

结果如下

Address of var[3] = 0x7ffdcdec4038
Value of var[3] = 1000
Address of var[2] = 0x7ffdcdec4034
Value of var[2] = 100
Address of var[1] = 0x7ffdcdec4030
Value of var[1] = 10

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值