指针简介

        在C++中,也可以给内存中的数据创建“快捷方式”,即为指针(Pointer)。它和整型、字符型、浮点型一样,是一种数据类型。指针也是一种变量,在内存中也有地址。指针中存储的并不是所要调用的数据本身,而是所要调用的数据在内存中的地址

        同变量的数据类型类似,指针也有类型。之所以指针会有类型,是为了符合对应的变量或常量数据类型。不同指针类型的本质在于不同的操作。一个字符型数据在内存中占用一个字节,那么读取数据就应以字符型数据读出一个字节;一个长整型数据在内存中占用四个字节,那么读取数据时就应以长整型数据读出四个字节。如果指针类型与它所指向的数据类型不匹配,就可能对数据做出错误的操作。

        注意:指针本身也是一种数据类型

        在C++中,用&操作符可以获取变量在内存中的地址,称之为取地址操作符

        使用格式:&变量名或常量名

 

        声明指针变量:  int* iptr=&a; (a是一个int类型的变量)

        注意:声明多个指针变量时,必须在每个指针变量名前加上*,例如:

        int *iptr1 , *iptr2 , iptr3 ; //iptr1和iptr2是指向整型变量的指针变量,而iptr3是整型变量


        一个*只能修饰一个指针,所以:

        int* p1,p2;

        表示p1为指针变量,而p2则为整型变量。

        在一个定义语句中定义两个指针变量的方法为:

        int *p1,*p2;


        如果声明了一个指针却不对它作初始化,那么它所指向的内容也是无法确定的,而这种情况是十分危险的。

        如果在声明变量之后,找不到合适的地址进行初始化,可以将其初始化为空指针(NULL)(它的意思是“空”,即指针没有指向任何东西)。

        比如:int *iptr=NULL;   或是  int *iptr=0;

        要注意的是,C++是大小写敏感的,NULL与null是不同的。所以,在使用的时候必须要大写。

 

        间接引用操作符( * ),作用是获取指针所指向的变量或存储空间。间接引用的指针可以作为左值。具体的使用格式为:*指针变量名

 

        不能将一个常量的地址赋值给一个对应类型的指针变量,因为这样可能导致通过指针更改常量,所以是不合法的。

 

指针的操作和运算:

        对于指针类型来说,可以使用的运算有:和整数做加法运算、和整数做减法运算、两指针做关系运算。

 

       指针和整数C的加减法是指针向前或向后移动C个对应类型的存储区域,即可以得到以下公式:

       新地址=旧地址±C*每个对应数据类型的变量在内存中所占字节数

       (因为每个int变量在内存中所占字节数为4,所以对一个int类型的指针做一次加减法,两次地址相差4 )

 

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值