指针变量的值是地址.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
指针变量的值是地址

第6章 指针 6.1 指针的概念 6.2 变量与指针 6.3 数组与指针 6.4 字符串与指针 6.5 函数与指针 6.6 返回指针值的函数 6.7 指针数组和指向指针的指针 6.8 有关指针的数据类型和指针运算的小结 *6.9 引用 6.1 指针的概念 程序中定义的每一个变量,系统根据变量类型分配一定长度内存单元。 例如,C++编译系统一般为整型变量分配4个字节,为字符型变量分配1个字节。 内存区的每一个字节有一个编号,这就是“地址” 。 直接存取方式:按变量名存取变量值的方式。 直接将数3送到整型变量i所标识的单元中。 i = 3 间接存取方式:将3送到指针变量i_pointer所指向的单元(这就是变量i所标识的单元)中。 *i_pointer = 3 6.2 变量与指针 指针变量: 用它来指向另一个变量。 “*”符号表示指向。例如,i_pointer是一个指针变量,而*i_pointer表示i_pointer所指向的变量。 下面两个语句等价: ① i=3; ② *i_pointer=3; 6.2.1 定义指针变量 定义指针变量的一般形式: 基类型 *指针变量名; 例:int i , j; //定义整型变量 i , j int *pointer_1 , *pointer_2; //定义指向整型数据的指针变量*pointer_1 , *pointer_2 例6.2 输入a和b两个整数,按先大后小的顺序输出a和b(用指针变量处理)。(不改变a,b的值) 思考1: 输入a、b、c三个整数,由大到小排序 (用指针变量处理)。(不改变a,b,c的值) 6.2.3 指针作为函数参数 例:通过调用函数交换a和b的值。 注意交换*p1和*p2的值是如何实现的。如果写成以下这样就有问题了: void swap(int *p1,int *p2) {int *temp; *temp=*p1; //此语句有问题 *p1=*p2; *p2=*temp; } 结论:函数的调用只能有一个返回值,而使用指针变量作函数参数,可通过指针变量改变主调函数中其它变量的值,相当于通过函数调用从被调用的函数中得到多个值。 6.3 数组与指针 6.3.1 指向一维数组元素的指针 指针变量可以指向数组元素(把某一元素的地址放到一个指针变量中)。 int a[10]; //定义10个元素的整型数组a int *p; //定义一个基类型为整型的指针变量p p=a[0]; //将a[0]的地址赋给指针变量p,使p指向a[0] 数组名代表数组中第一个元素(即序号为0的元素)的地址。因此,下面两个语句等价: p=a[0]; p=a; 在定义指针变量时可以给它赋初值: int *p=a[0]; //p的初值为a[0]的地址 也可以写成: int *p=a; //作用与前一行相同 如果p的初值为a[0],则: (1) p+i和a+i就是a[i]的地址,或者说,它们指向a数组的第i个元素。 (2) *(p+i)或*(a+i)与a[i]等价。 [ ] 变址运算符。a[i]的求解过程: 先按a+i×d计算数组元素的地址,然后找出此地址所指向的单元中的值。(d为单个数组元素占用的字节数) (3) 指向数组元素的指针变量也可以带下标,如p[i]与*(p+i)等价。 例6.5 倒序输出5个元素的数组中的全部元素。 (1) 下标法 (2) 指针法 将上面程序第7行和第10行的“a[i]”改为“*(a+i)”。 (3) 用指针变量指向数组各个元素 注意:切实保证指针变量p指向数组中有效的元素。 int a[10],*p=a; //指针变量p的初值为a[0] cout*(p+10); //要输出a[10]的值 在int a[10],*p=a; 前提下: (1) p++(或p+=1)。使p指向下一元素,即a[1]。如果用*p,得到下一个元素a[1]的值。 (2) *p++。++和*同优先级,结合方向为自右而左,因此等价于*(p++)。 作用是: 先得到p指向的变量的值(即*p),然后再使p的值加1。如: (5) 如果p当前指向a[i],则 *(p--) 是先取*p值,得到a[i],然后p减1, p指向a[i-1] 。 *(--p) 是先使p减1,再取*p,得到a[i-1] 。 循环移位问题 如: 1 2 3 4 5 向左循环移动1位 2 3 4 5 1 6.3.2 用指针变量作函数参数接

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档