多语言展示
当前在线:615今日阅读:126今日分享:42

C++程序设计之指针应用

本人学习C++的过程经验及总结,本文内容:数组指针的定以及使用指针与字符串指针函数与函数指针
工具/原料

vs2015

数组指针
1

指向数组的指针变量称为数组指针变量。一个数组是由一组连续的内存单元组成的,不带下标的数组名会被解释成数组首元素的指针,即首个数组元素(下标变量)的地址。一个数组是由各个数组元素组成的,每个数组元素占有若干个连续的内存单元。

2

设有实数组a,指向a[0]的指针变量为pa,那么pa,a,&a[0]均指向同一单元,它们是数组a的首地址,也是0号元素a[0]的首地址。pa+1,a+1,&a[1]均指向1号元素a[1]。类推可知a+i,a+i,&a[i]指向i号元素a[i]。pa是变量,而a,&a[i]都是常量,都不能修改。

3

利用数组指针访问数组元素有两种方式:1)使用下标访问的方法,即用a[i]形式访问数组元素;2)利用指针偏移的方法,即采用*(pa+i)形式。。

4

C++允许把一个二维数组分解为多个一维数组来处理。

5

示例分析:1)a是二维数组名,也是二维数组第0行的首地址0x0012FEA8;2)a[0]是第一个一维数组的数组名和首地址,因此也为0x0012FEA8;3)*a与a[0]等效的,它们都是指针类型的,表示一维数组a[0]第0号元素的首地址,也为0x0012FEA8;4)&a[0][0]是二维数组a的第0行第0列元素首地址,同样是0x0012FEA8。

6

二维数组指针变量的定义:类型说明符 (*指针变量名)[ 维数1];n维数组指针变量的定义:类型说明符 (*指针变量名) [维数n-1] [维数n-2] …[维数1];“(*指针变量名)”两边的括号不可少,如缺少括号则表示是指针数组。自己运行看一下结果

指针与字符串

用字符数组和字符指针变量都可实现字符串的存储和运算。字符串指针变量本身是一个变量,用于存放字符串的首地址,不存放字符。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以'\0 '作为串的结束。

指针函数与函数指针
1

在C++中允许一个函数的返回值是一个指针(即地址),这种返回指针值的函数称为指针型函数。类型说明符 *函数名(形参表){  /*函数体*/}

2

一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。可以把函数的这个首地址(或称入口地址)赋给一个指针变量,使该指针变量指向该函数。然后通过指针变量就可以找到并调用这个函数。这种指向函数的指针变量称为“函数指针变量”。返回值类型 (*指针变量名)(参数表);

3

利用函数指针变量调用函数的步骤如下

4

指针数组是一组有序的指针的集合,或者说,数组元素为指针。指针数组的所有元素都必须是具有相同存储类型、指向相同数据类型的指针变量。类型说明符* 数组名[数组长度]

5

二维数组指针变量是单个的指针变量,其一般形式中“(*指针变量名)” 两边的括号不可少。       指针数组类型表示的是多个指针(一组有序指针),在一般形式中“*指针数组名”两边不能有括号。

多级指针

如果一个指针变量存放的又是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量。       通过指针访问变量称为间接引用。由于指针变量直接指向变量,所以称为单级间接访问。而如果通过指向指针的指针变量来访问变量则构成了二级或多级间接访问。类型说明符** 指针变量名;

const指针
1

const修饰指针时,可以限制指针不可以改变指向,也可以限制通过指针无法修改指向的数据。指向常量的指针,可以通过间接引用运算符“*”读取变量,但是无法修改变量的指针。const (数据类型*) 指针名;

2

指向常量的指针的特点。1.无法通过指针修改指向的数据;2.可以修改指向;3.可以指向用const修饰的常量,也可以指向变量,但是都无法通过指针修改指向的数据。注:将一个指向常量的指针传递给普通指针将会导致一个编译错误。

3

在指针定义语句的指针名前加const,表示指针本身是常量,称为指针常量。数据类型* const 指针名;注:指针常量在定义时,必须初始化。

推荐信息