c++学习笔记----指针

参考来源 http://see.xidian.edu.cn/cpp/biancheng/cpp/rumen_7/

1.指针的理解

在内存中有些数据,我们不知道它的变量但知道它的存储位置,即地址。在C++中,给内存中的数据创建的”快捷方式“为指针,它和整型、字符型、浮点型一样,是一种数据类型。指针中存储的并不是所要调用的数据本身,而是所要调用的数据在内存中的地址。我们可以通过对指针的操作来实现对数据的调用和操作。

2.指针变量

指针本身也是一种数据类型。不同指针类型的本质在于不同的操作。如果指针类型与它所指向的数据类型不匹配,就可能对数据作出错误的操作。

A.指针变量声明

char *cptr;//指向字符型变量的指针变量
   int *iptr;//指向整型变量的指针变量

B.取地址操作符

 int c=9;

int *iptr=&c;//声明指向整型变量的指针变量,并作初始化。指针iptr指向了变量c

C.间接引用操作符*

其作用是获取指针所指向的变量或存储空间

3.指针加减法运算

指针和整数C的加减法是指针向前或向后移动C个对应类型的存储区域,即可以得到以下公式:
新地址=旧地址±C*每个对应数据类型的变量在内存中所占字节数

4.指针运算关系

对于指针来说,等于和不等于就是判断两个指针的值是否相同或不同,即两个指针是否指向了相同或不同的地方。而大于和小于是判断指针的值哪个大哪个小。值较小的在存储器中的位置比较靠前,值较大的在存储器中的位置比较靠后。

5.指针与保护

A.常量指针 对内存只读的指针

为了解决指针可能误修改或破坏内存中的数据,我们可以对内存中的数据加上写保护。即具有这种属性的指针只能够读出内存中的数据,却不能修改内存中的数据。我们把具有这种属性的指针称为指向常量的指针,简称常量指针。

在指针类型前加上const,表示这些数据是常量,只能读不能写。比如:const int *iptr;,这时候我们只能够通过指针iptr读出内存里的数据,但是不能对其写入、修改。

B.指针常量

整型数据可以有整型常量和整型变量。指针作为一种数据类型也应该具有指针常量。

定义指针常量的语句格式为:
    指针类型 * const 指针常量名=&变量名;

指针常量和常量指针不同,指针常量是指正所指向的位置不能改变,即指针本身是一个常量。但是指针常量可以通过间接引用修改内存中的数据。

例子

#include "iostream.h"
int main()
{
   int a=42;
   const int b=84;
   const int *captr=&a;//常量指针
   int * const acptr=&a;//指针常量
   int *bptr=&b;//错误,不能把常量的地址给指针变量
   const int *cbprt=&b;//把常量的地址给常量指针是允许的
   *captr=68;//错误,间接引用常量指针不可修改内存中的数据
   *acptr=68;//间接引用指针常量可以修改内存中的数据
   captr=&b;//常量指针可以指向其他变量
   acptr=&b;//错误,指针常量不能指向别的变量
   const int * const ccaptr=&a;//常量指针常量,既不能间接引用修改数据,也不能指向别的变量或常量
   *ccaptr=68;//错误,不能间接引用修改数据
   ccaptr=&b;//错误,不能指向别的常量或变量
   return 0;
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值