概述
在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 )
关系运算有等于、大于、小于、大于等于、小于等于和不等于六种。对于指针来说,等于和不等于就是判断两个指针的值是否相同或不同,即两个指针是否指向了相同或不同的地方。而大于和小于是判断指针的值哪个大哪个小。值较小的在存储器中的位置比较靠前,值较大的在存储器中的位置比较靠后。
最后
以上就是想人陪可乐为你收集整理的指针简介的全部内容,希望文章能够帮你解决指针简介所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复