C++程序设计教程第6章.pdfVIP

  • 16
  • 0
  • 约2.45万字
  • 约 29页
  • 2018-04-03 发布于河南
  • 举报
C++程序设计教程第6章.pdf

第6章 指 针 教学提示:指针的存在使得 C++非常强大和灵活,利用指针可以直接进行内存访问, 能够实现动态地分配内存,可以有效地表示和访问复杂的数据结构,可以提高某些程序的 执行效率等等。正是由于指针的灵活性使得初学者往往认为指针很难理解和掌握,但对一 个程序员来说,C++ 的指针却充满了无穷的魅力,如果没有学好指针就等于还没有掌握 C++。 这一章我们就来讨论指针的定义、指针变量的引用,同时介绍指针和数组及字符串的 关系,在最后介绍以下两个难点:指向函数的指针和指向指针的指针。 学习目标: 掌握指针变量的定义格式及引用方法; 掌握指针变量的简单运算; 掌握用 new 与 delete 运算符动态分配与回收内存空间的方法; 掌握用指针变量处理一维数组与字符串数组的问题; 掌握用指针变量、数组作为函数参数时函数的使用方法; 了解指向函数的指针和指向指针的指针的使用方法。 6.1 地址和指针 在 C++ 中,与指针密切相关的一个概念是地址。计算机程序在执行时需要内存储器来 存储数据和代码,计算机的内存储器被分割成许多相同的连续存储单元,相应每个存储单 元都有一个唯一的编号,称之为地址。它就相当 存储地址 存储内容 变量 于每个房间的门牌号,用来区分不同的房间,计 算机就是通过这种地址编号方式来存取内存中的 … … … 数据的。如图 6.1 所示为内存结构示意图。 … … … 在图 6.1 中,每一行代表一个存储单元,一 2000 3 i 般以一个整型数的大小为一个存储单位,常为 2 2002 4 j 字节。在这里请首先务必弄清一个存储单元的存 2004 5 k 储地址与存储内容这两个概念的区别。假设程序 … … … 已定义了3 个整型变量 i、j 、k ,编译时系统分配 3010 2000 p (指针变量) 2000 和 2001 两个字节给变量 i,2002 和 2003 字 … … … 节给j ,2004 、2005 给 k 。程序运行时,在内存中 图 6.1 内存结构示意图 已没有i、j 、k 这些变量名,编译器已将其转化为 一个符号对应表,在表内,变量的标识符与存储地址一一对应,运行程序时,对变量值的 存取都是通过地址进行的。 第 6 章 指针 ·149 · 例如:cout i; 计算机是这样执行的:首先根据变量名与地址的对应关系,找到变量 i 的地址 2000 , 然后根据 i 的数据类型——整型,从由地址为2000 开始的存储内容中取出两个字节的数据 即变量的值 3 ,最后把它输出。 所谓指针就是变量、数组、函数等的存储地址。 指针变量就是用于存放指针的变量。引入指针变量能够对变量的值采用另一种方式进 行访问,我们称直接按变量地址存取变量值的方式为直接访问方式;而将变量的地址存放 在另一个变量 即指针变量 中,再通过指针变量来存 存储地址 存储内容 变量 取变量值的方式为间接访问方式。这里请注意,指 … … … 针变量同样是一个变量,只是其存储内容较特殊—— … … … 地址。有时为叙述方便,常常不严格区分指针变量和 3 i 指针的不同。本章将看到,指针变量可以存储各类 4 j 标识符的地址,包括变量、数组、函数、对象,甚 5 k 至是指针。在程序运行过程中,变量的地址往往是 … … 编译器随机分配的,不要过于关心某变量的地址是多 p 指针变量 少,对程序员来说,更喜欢一个新的词汇:指向。 如果一个变量、数组、函数等的地址被存储在一个指 … … … 针变量中,就称这个指针变量指向那个变量、数组或 图 6.2 “指向”示意图 函数。可以通过图 6.1 和图 6.2 来慢慢理解,这里假设 p 是一个指针变量,它存储的数据是 变量 i 的地址,我们说指针变量p 指向整型变量 i,也可不严格地说p 指向 i 。 6.2 变量的指针和指向变量的指针变量 6.2.1 指针变量的定义 C++规定,指针变量必须先定义后引用,定义一个指针变量的一般形式为: * ; 例如: int *pi; //pi 是一个指向 int 型变量的指针变量 float *pl; //pl是一个指向 float 型变量的指针变量 char *pc; //pc是一个指向 char 型变量的指针变量 char *pa [3]; //pa 是一个指向一维数组的指针变量 int *pf ; //pf 是一个指向函数的指针变量,该函数返回值为 int 型 int **pp; //pp 是一个指向指针的指针变量 指针变量也可以与普通变量一起定义,例如: float a,b,*f; 上面同时定义了两个 float 类型变量和一个指向 float 类型变量的指针

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档