指针总结

来源:互联网 发布:软装设计软件 编辑:程序博客网 时间:2024/06/05 15:04

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

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

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

 

数据类型 *标识符;(其中“*”表示这里声明的是一个指针类型的变量)

 

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

与其他类型的变量一样,对指针赋初值也有两种方法:

(1)在定义指针的同时进行初始化赋值。

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

(2)在定义之后,单独使用赋值语句。

     指针名=地址;

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

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

指针加减运算的特点使得指针特别适合于处理存储在一段连续内存空间中的同类数据。而数组恰好是具有一定顺序关系的若干同类型变量的集合体,数据元素的存储在物理上也是连续的,数组名就是数组存储的首地址。

如果一个数组的每个元素都是指针变量,这个数组就是指针数组。指针数组的每个元素都必须是同类型的指针。

声明一维指针数组的语法形式为:

数据类型*数组名[下标表达式];

由于指针数组的每个元素都是一个指针,必须先赋值后引用,因此,声明数组之后,对指针元素赋初值是必不可少的。

    当需要在不同的函数之间传送大量数据时,程序执行时调用函数的开销就会比较大。这时如果需要传递的数据是存放在一个连续的内存区域中,就可以只传递数据的起始地址,而不必传递数据的值,这样就会减少开销,提高效率。C++的语法对此提供了支持:函数的参数不仅可以是基本类型的变量、对象名、数组名或引用名,而且可以是指针。如果以指针作为形参,在调用时实参将值传递给形参,也就是使实参和形参指针变量指向同一内存地址。这样在子函数运行过程中,通过形参指针对数据值的改变也同样影响着实参指针所指向的数据值。

除了viod类型的函数之外,函数在调用结束之后都要有返回值,指针也可以是函数的返回值。当一个函数的返回值是指针类型时,这个函数就是指针型函数。

指针型函数的一般定义形式是:

数据类型 *函数名(参数表)

{

   函数体

}

和基本类型的变量一样,每一个对象在初始化之后都会在内存中占有一定的空间。因此,既可以通过对象名,也可以通过对象地址来访问一个对象,声明对象指针的一般语法形式为:

类名 *对象指针名;

原创粉丝点击