Pointer Summarized

来源:互联网 发布:网络四层协议 编辑:程序博客网 时间:2024/05/23 16:43

<一>指针

指针是c++从c中继承过来的重要数据类型,它提供了一种较为直接的地址操作手段。正确的使用指针,可以方便、灵活而有效的组织和表示复杂的数据结构。动态内存分配和管理也离不开指针。在c++中有专门用来存放内存单元地址的变量类型,这就是指针类型。

(1)指针变量声明

指针也是一种数据类型,具有指针类型的变量称为指针变量。指针类型变量是用于存放内存单元地址的。

指针也是先声明后使用,声明指针的语法形式是:

数据类型*标示符;

例如: int*ptr;

(2)与地址相关的运算“*”和“&”

C++提供了两个与地址相关的运算符——“*”和“&”。“*”称为指针运算符,也称解析,表示获取指针所指向的变量的值。“&”称为取地址运算符,用来得到一个对象的地址。

(3)指针的赋值

①在定义指针的同时进行初始化赋值。语法形式为:

存储类型 数据类型*指针名=初始地址;

②在定义之后,单独使用赋值语句。赋值语句的语法形式为;

指针名=地址;

一个数组,可以用它的名称来直接表示它的初始地址。数组名称实际上就是一个不能被赋值的指针,即常量指针。

关于指针类型,还应注意一下几点。

①可以声明指针常量的指针,此时不能通过指针来改变所指对象的值,但指针本身可以改变,可以指向另外的对象。例如:

int a;

counst int *p1=&a;

int b;

p1=&b;

*p1=1; //编译时出错,不能通过p1改变所指的对象

使用指针常量,可以确保指针所指向的常量不被意外更改。

②可以声明指针类型的常量,这时指针本身的值不会改变。例如:

int *counsr p2=&a;

p2=&b;  //错误,p2是指针常量,值不能改变

③一般情况下,指针的值只能赋给相同类型的指针。但是有一种特殊的void类型指针,可以存储任何类型的对象地址,就是说任何类型的指针都可以赋值给void类型的指针变量。经过使用类型显式转换,通过void类型指针便可以访问类型的数据。

(4)指针运算

指针是一种数据类型。与其他数据类型一样,指针变量也可以参与部分运算,包括算术运算、关系运算和赋值运算。

指针可以和整数进行加减运算,但是运算规则比较特殊。比如有指针p1和整数n1,p1+n1表示指针p1当前所指位置后第n1个数的地址,p1-n1表示p1当前所指位置前方第n1个数的地址。“指针++”或“指针--”表示指针当前所指位置下一个或前一个数据的地址。

0专用于表示空指针,也就是一个不指向任何有效地址的指针。例如:

int *p;

p=0;

空指针也可以用NULL来表示,例如

int *p=NULL;

NULL是一个在很多头文件中都有定义的宏,被定义为0. 

原创粉丝点击