- 1、本文档共65页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第15章 指 针 西南交通大学软件学院 计算机基础教研室 本章主要内容 C++中指针的基本概念 指针类型变量的定义方法 指针与地址运算符 指针变量赋值、指针的运算 通过指针类型的变量去访问某个变量或数组元素的值 引用 动态分配内存 按引用调用 什么是地址? 计算机的内存储器就象一个巨大的一维数组, 每个数组元素就是一个存储单元(在微型计算机中其大小通常为一个字节)。 就象数组中的每个元素都有一个下标一样, 每个内存单元都有一个编号, 又称地址。 什么是地址? 在运行一个程序时, 程序本身及其所用到的数据都要放在内存储器中:程序、函数、变量、常数、数组和对象等, 在内存储器中占有一席之地。 存放在内存储器中的程序和数据都有一个地址, 用它们占用的那片存储单元中的第一个存储单元的地址表示。 什么是地址? 在C++中,为某个变量或者函数分配内存储器的工作由编译程序完成。 内存地址的访问方式 直接访问方式:通过变量名访问 间接访问方式:通过地址访问 如何知道某个变量、数组、函数的地址 C++规定: 变量的地址可以使用地址运算符求得。例如, x表示变量x的地址; 数组的地址, 即数组第一个元素的地址, 可以直接用数组名表示; 函数的地址用函数名表示。 什么是指针 指针是C++语言中的一种数据类型,是专门用来处理地址的。 指针是某个内存单元的首地址。 什么是指针变量? 指针变量是包含另一个变量地址的变量。 指针变量也是一个变量,遵循先定义,后使用。 定义指针变量的类型是由该指针指向的变量类型决定。 指针变量的概念 定义 例:int i; int * i_pointer; 指向整型变量的指针 指针变量的声明 变量的指针:变量在内存中的存放起始地址 指针变量的声明: 类型标识符* 指针变量 例如:int* p; ①??定义语句中的“*”表示该变量为指针变量 ②??一个指针变量只能存储同一种类型变量的地址 指针变量的初始化 语法形式 类型标识符 * 指针名=初始地址; 例: int * pa=a; 指针变量的初始化 注意事项 用变量地址作为初值时,该变量必须在指针初始化之前定义。 如:int a; int * pa=a; 已赋初值的指针可以初始化另一 个指针变量。 int * pa=a; int * pb; pb=pa; 指针与地址运算符 “ ”在执行语句中作为取地址运算符,它是一元运算符,返回操作数的地址,操作数必须是变量名。 “*”除了可以在声明语句中声明指针时使用外,还可以在执行语句中作为为指针运算符使用,也称为“间接访问”运算符,指针运算符是一元运算符,指针运算符 * 表示指针所指向的变量的值。 a:取变量a的地址。 *a:指针变量所指向的变量的值。 int y=5; int* p; p=y;cout*p; 指针与地址运算符 *出现在声明语句和执行语句中的含义是不同的。 int* p; // *在声明语句中表示声明的是指针,声明p是整型指针 cout*p; // *在执行语句中表示指针所指对象的内容 指针变量的赋值运算 指针变量=地址 p = a; p=array;//将数组的首地址赋值给p p= array[i]; //将数组的第i个元素的地址赋值给p p = max;//将函数max的入口地址赋给p p1=p2;//将指针p2的值赋个指针p1 指针变量的赋值运算 指针变量=地址 不能把常量或表达式的地址赋给指针变量。 如:P=67;P=(i+5)是非法的 不能将一个整数赋给指针变量,但可以赋整数值0,表示该指针空指针,不指向任何内容。 指针的类型是它所指向变量的类型。 允许声明指向 void 类型的指针。该指针可以被赋予任何类型对象的地址。 例: void *general; 例1 指针的定义、赋值与使用 #includeiostream using namespace std; void main( ) { int *i_pointer; int i; i_pointer=i; i=10; cout“Output int i=”iendl; coutOutput int pointer i=*i_pointerendl; } 程序运行的结果是: Output int i=10 Output int pointer i=10 指针变量的算术运算 指针与整数的加减运算 指针 p 加上或减去 n ,其意义是指针当前指向位置的前方或后方第 n 个数据的地址。 这种运算的结果值取决于指针指向的数据类型。 指针加一,减一运算 指向下一
文档评论(0)