网站大量收购独家精品文档,联系QQ:2885784924

第十章指针(2).ppt

  1. 1、本文档共105页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
指 针 地址和指针的概念 系统根据程序中定义的变量类型,分配一定长度的空间。 1、内存区的每一个字节有一个编号,这就是“地址”。 ?????? 地址和指针的概念 2.对变量值的存取有两种方式: (1)直接访问方式:按变量地址存取变量的方式。?? (2) 间接访问方式:将一个变量的地址存放到另一个变量中,那么存放变量地址的变量称作指针变量。??? 地址和指针的概念 ??? 变量i_pointer中存放的是地址,这种变量叫指针变量。 指针变量中存放哪个变量的地址,就称此指针变量指向谁。 ??? 一个变量的地址称为该变量的“指针”。 ??? 变量的指针就是变量的地址。 ??? 存放变量地址的变量是指针变量,用来指向另一个变量。 变量的指针和指向变量的指针变量 ??? 为了表示指针变量和它所指向变量之间的联系,在程序中用“*”符号表示“指向”。 也可以这样理解:*i_pointer=*i=i。 下面两个语句的意思相同: 1)i=3; 2)*i_pointer=3; 变量的指针和指向变量的指针变量 1.定义一个指针变量 定义指针变量的一般形式为: 基类型 *指针变量名 如下都是合法的定义: float *pointer_3; char *pointer_4; 要想使指针变量指向哪一个变量应赋值如下: pointer_1=i; pointer_2=j; 变量的指针和指向变量的指针变量 注意: (1) 指针变量前面的“*”,表示该变量的类型为指针类型。 (2) 在定义指针变量时必须指定基类型。指针变量只能存放所定义类型的一般变量的地址。 ?(3)定义后,系统为指针变量分配内存单元,用来存放地址。 (4)定义后,当存放了某一变量的地址,才是有指向的。 (5)指针变量只能存放地址。 变量的指针和指向变量的指针变量 2. 指针变量的引用 有两个有关的运算符: (1) :取地址运算符。 (2) *:指针运算符(或称“间接访问”运算符) 例10.1 通过指针变量访问整型变量。 main() {int a,b; ?int *pointer_1,*pointer_2; ?a=100;b=10; 变量的指针和指向变量的指针变量 ?pointer_1=a; ?pointer_2=b; ?printf(%d,%d\n,a,b); ?printf(%d,%d\n,*pointer_1,*pointer_2); } 变量的指针和指向变量的指针变量 说明: (1) 如果已执行了“pointer_1=a;”语句,若有*pointer_1相当于pointer_1即a 如果有pointer_2=*pointer_1;它的作用是将a赋给pointer_2。 (2) *a的含义是什么?相当于a。 (3) (*pointer_1)++相当于a++。 变量的指针和指向变量的指针变量 例10.2 输入a和b两个整数,按先大后小的顺序输出a和b。 main() {int *p1,*p2,*p,a,b; ?scanf(%d,%d,a,b); ?p1=a; ?p2=b; ?if(ab) ?{p=p1;p1=p2;p2=p;} ?printf(a=%d,b=%d\n,a,b); ?printf(max=%d,min=%d\n,*p1,*p2);} 变量的指针和指向变量的指针变量 变量的指针和指向变量的指针变量 3. 指针变量作为函数参数 函数的参数可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。 例 10.3 将例10.2用函数的形式处理。 swap(int *p1,int *p2) {int p; ?p=*p1; ?*p1=*p2; ?*p2=p;} 变量的指针和指向变量的指针变量 main() { int a,b; int *pointer_1,*pointer_2; scanf(%d,%d,a,b); pointer_1=a; pointer_2=b; if(ab) swap(pointer_1,pointer_2); printf(a=%d,b=%d\n,a,b);} 变量的指针和指向变量的指针变量 变量的指针和指向变量的指针变量 swap(int x,int y) {int temp; ?temp=x; ?x=y; ?y=temp;} main() {int a,b; scanf(%d,%d,a,b); if(ab) swap(a,b); printf(a=%d,b=%d\n,a,b);} 变量的指针和指向变量的指针变量 swap(int *p1,int *p2) {int *p; ??p=p1; ??p1=p2; ??p2=p;} main(

文档评论(0)

wxc6688 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档