C++指针(一)

1.什么是指针?

指针是一个变量,存储另外一个变量的地址,即内存的直接地址。声明形式如下:

int *a;//整型指针,指向整型变量的内存地址
double *b;//double型指针,指向double型变量的内存地址
char *c;
float *d;

所有指针的值的实际数据类型都是一样的,是一个代表内存地址的十六进制数。

2.指针的使用

使用指针时会频繁进行以下几个操作:定义一个指针变量、把变量地址赋值给指针、访问指针变量中可用地址的值。实现代码如下:

#include <iostream>
using namespace std;

int main ()
{

    int a = 2;    //定义一个变量a

    //定义方式1
    int *p1 = &a;//定义一个指针变量P1,将变量a的地址赋值给指针P1

    //定义方式2
    int *p2;//声明一个指针变量P2
    p2 = &a;//将变量a的地址赋值给指针P2

    cout << "p1指针存储的地址值为 " << p1 << endl;
    cout << "*p1值为" << (*p1) << endl;
    cout << "p2指针存储的地址值为 " << p2 << endl;
    cout << "*p2值为" << (*p2);
}

以上代码输出结果为: 

p1指针存储的地址值为 0x7fff1159c14c
*p1值为2
p2指针存储的地址值为 0x7fff1159c14c
*p2值为2

3.空指针

含义:NULL 指针是一个定义在标准库中的值为零的常量,即空指针是指向地址为0的变量。

如下代码可以说明空指针的含义:

#include <iostream>
using namespace std;

int main ()
{
   int a = 1 ;

   int  *p1 = NULL;
   cout << "p1指针存储的地址值为 " << p1 << endl;

   int * p2 = &a;   //将a变量的地址值赋给P指针
   cout << "p2指针存储的地址值为 " << p2 << endl;
   cout << "a变量的地址值是 " << (&a);
 
   return 0;
}

以上代码输出结果为: 

p1指针存储的地址值为 0
p2指针存储的地址值为 0x7ffcff846b98
a变量的地址值是 0x7ffcff846b98

注:此时 *p1 是不被允许使用的,大多数操作系统是不允许访问内存地址为0的内存空间的。

使用场景:当声明指针变量时,如果没有确切的地址可以赋值,则可为指针变量赋一个 NULL 值,赋为 NULL 值的指针被称为空指针,空指针是指指向内存地址为0的指针

作用:地址为 0 的内存,是操作系统保留的。在大多数的操作系统上,程序不允许访问地址为0的内存,所以空指针可表明该指针指向一个不可访问的内存位置

如果所有未使用的指针在声明时都被赋予空值,同时避免使用空指针,就可以防止误用一个未初始化的指针。很多时候,未初始化的变量存有一些垃圾值,导致程序难以调试。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值