文档详情

指针和引用 课件.pdf

发布:2024-12-27约2.81千字共17页下载文档
文本预览下载声明

第四章指针和引用

4.1指针

4.2引用

第四章指针和引用

4.1.1指针的定义

4.1.2指针的应用

4.1.3堆内存分配

4.1.4指针与数组

4.1指针

1、指针类型

指针类型是它所指向的类型,而不是指针本

身数据值的类型,因为任何指针变量本身的数据

值类型都是无符号长整型。由于指针的类型是由

它所指向的变量类型而定,所以指针所指向的变

量类型不同,指针的类型也不同。

4.1.1指针的定义

2、指针变量的定义

定义为指针类型的变量称为指针变量,指针变量定义和定

义一般变量一样,也需要3个基本要素:变量名、变量类型和

变量值。先要指出指针类型,确定指针变量的名字,并在指针

变量名前加“*”,以表示后面的名字为指针变量名。具体格

为:

指针类型说明符*指针变量名1,*指针变量名2,……;

指针变量名和一般变量是一样的要求——只要符合合法的

标识符即可,但是在变量类型和变量值上有所不同。其特殊性

就在于该类型变量是用来保存地址值的。

3、指针变量的初始化

指针变量与一般变量一样,在定义时可以对

其初始化,也可以不赋初值,等需要的时候再赋

值,只是所赋的初值均为地址值。不同类型的变

量的地址值表示方法有所不同。在C++语言中给

指针变量初始化是取一般变量、数组元素、结构

成员等的地址给指针变量赋值,取地址的运算符

为“”。

4、指针变量所指向的变量

例如,inta=6;

int*pa=a;//定义指针变量pa,并将变量a的地址值赋给pa

解释:第一条语句定义了一个int型变量a,并给它赋了初值,

于是变量a就有了两个值:一个是该变量存储的数据值

6;另一个是变量a在内存中分配的地址值,它被表示为

a。第二条语句定义了一个指针变量pa,它的基类型

是int型的,它也被赋了初值,即变量a的地址值a,于

是指针变量pa便指向了变量a。

一般来说,指针允许的运算如下:

•加赋值、减赋值和赋值运算

对指针变量可以赋初值,也可以通过赋值语句给其赋值。

例如,inta,*pa=a;

•加、减、自加、自减和比较运算

指针可以进行加、减、自加、自减和比较运算,但是需要

在一定的条件下,才可以进行。例如,指向同一个数组的两个

不同指针可以相减,也可以相比较,这样的运算是有意义的。

•间接访问运算与取地址运算

指针运算实际上是地址运算,但是指针运算又不同于地址

运算。

4.1.2指针的应用

1、堆内存

堆是内存空间。堆是区别栈区、全局数据区和代码区的另

一个内存区域。堆允许程序在运行时而不是编译时,申请某个

大小的内存空间。

2、获得堆内存

函数malloc()是C程序获得堆内存的一种方法,它在alloc.h

头文件中声明。malloc()函数原型为:

void*malloc(unsignedlongsize);

3、释放堆内存

函数free()返还由malloc()函数分配的堆内存,其函数原型

为:voidfree(void*);

4.1.3堆内存分配

4、new和delete

new和delete是C++专有的操作符,他们不用头文件声明。

new类似于函数malloc()分配堆内存,但比malloc()更简练。

new的操作数为数据类型,它可以带初始化值表或单元个数。

new返回一个具有操作数之数据类型的指针。

返回delete类似于函数free(),释放堆内存。delete的操作

数是new返回的指针,当返回的是new分配的数组时,应该带

[]。

5、const指针

指向常量的指针(常量指针),常量指针就是指指向常

量的指针,在指针定义语句的类型前加const,表示指向的对

象是常量。

•指针常量

指针常量就是指指针本身是常量。在指针定义语

句的指针名前加const,表示指针本身是常量。

•指向常量的指针常量

可以定义一个指向常量的指

显示全部
相似文档