C语言程序设计(第二版)教学课件 任正云 第8章 指针.ppt

C语言程序设计(第二版)教学课件 任正云 第8章 指针.ppt

ID:50353076

大小:686.50 KB

页数:44页

时间:2020-03-08

C语言程序设计(第二版)教学课件 任正云 第8章 指针.ppt_第1页
C语言程序设计(第二版)教学课件 任正云 第8章 指针.ppt_第2页
C语言程序设计(第二版)教学课件 任正云 第8章 指针.ppt_第3页
C语言程序设计(第二版)教学课件 任正云 第8章 指针.ppt_第4页
C语言程序设计(第二版)教学课件 任正云 第8章 指针.ppt_第5页
资源描述:

《C语言程序设计(第二版)教学课件 任正云 第8章 指针.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章指针地址和指针的概念指向变量的指针变量指针与数组字符串的指针和指向字符串的指针变量指针数组指向指针的指针函数指针返回指针的函数main()函数的返回指和参数8.1.地址和指针的概念内存单元的编号也叫做内存地址,通常把这个地址称为指针。即变量的指针就是变量的地址。对于一个内存单元来说,单元的地址即为指针,其中存放的数据是该内存单元的内容。内存单元的地址和内存单元的内容是两个不同的概念。指针变量是一个地址变量,当一个指针变量中存放了一个地址时,该指针变量就指向该地址的存储空间。(a)变量的地址装入指针变量中(b)指针变量指向变量有了指针

2、变量以后,对一般变量的访问既可以通过变量名进行,也可以通过指针变量进行。通过变量名或其地址(如a或&a)访问变量的方式叫直接访问方式;通过指针变量(如p)访问它指向的变量(如a)的方式叫间接访问方式。8.2.1指向变量的指针变量的定义指针变量也是一个变量,所以和其他变量一样必须先定义后使用。定义指向变量的指针变量的一般格式如下:类型标识符*变量名;例如:int*p1,*p2;float*q;在指针变量定义中,指针变量名前的“*”号仅是一个符号,并不是指针运算符,表示定义的是指针变量;类型标识符表示该指针变量所指向的变量的数据类型,并不是指

3、针变量自身的数据类型,所有指针变量都是存放变量地址的。8.2指向变量的指针变量8.2.2指针运算符2.取内容运算符“*”取内容运算符“*”是单目运算符,其结合性为从右到左,功能是取指针变量所指向的存储区域内存放的值。取内容运算符“*”是优先级最高的运算符之一。1.取地址运算符“&”取地址运算符“&”是单目运算符,其结合性为从右到左,功能是取变量的地址。取地址运算符“&”是优先级最高的运算符之一。【例8.1】指针变量的应用。#includevoidmain(){inta=3,*p;intb=5,*q=&b;intc;pri

4、ntf("a=%d,b=%d",a,b);p=&a;*q=9;printf("a=%d,b=%d",a,b);printf("*p=%d,*&a=%d",*p,*&a);(*p)++;printf("(*p)++=%d",a);}程序运行结果:a=3,b=5a=3,b=9*p=3,*&a=3(*p)++=4使用指针运算符时应注意以下几点:⑴指针“*”运算符和指针定义中的指针标识符“*”不是一回事。在指针变量定义中,“*”是类型标识符,表示定义的变量是指针类型的变量。而表达式中出现的“*”则是一个指针运算符,表示取指针变量所

5、指向变量的值。⑵对于语句“*p=&a,(*p)++;”表示使指针变量p所指向的存储单元的值自增,相当于a++。*p两边的括号是必须的,如果没有括号,成为*p++,而"++"和"*"是优先级相同的运算符,按从右到左的结合方向结合等价于*(p++)。p=&x;x=*p;p=&*p;x=*&x;/*表示取整型变量x的内存地址,并赋值给指针变量p*//*表示取指针变量p所指向的变量的值,并赋值给整型变量x*//*按优先级&*p等价&(*p),*p就是变量x,再执行&x,即取变量x的地址,并将变量x的地址赋值给指针变量p。因此,&*p等价于&x*/

6、/*按优先级*&x等价于*(&x),&x就是取变量x的地址,再执行*运算相当于取变量x的值,并赋值给整型变量x。因此*&x等价于x*/【例8.2】按从大到小的顺序输出两个整型变量的值。#includevoidmain(){inta=5,b=9;intp,*pa,*pb;printf("%d,%d",a,b);pa=&a;pb=&b;if(*pa<*pb){p=*pa;*pa=*pb;*pb=p;}printf("%d,%d",*pa,*pb);getch();}程序运行结果:5,99,58.2.3指针变量的初始化

7、指针变量初始化的一般格式如下:类型说明符*指针变量名=初始地址例如:intk,*p=&k;floatx,*s=&x;对于外部或静态指针变量在声明中若不带初始化项,指针变量被初始化为NULL,它的值为整数0。NULL由stdio.h定义为0,它也等同于‘’,意为空指针(定义一个指针变量后,没有使其指向一个确定的地址,这个变量称为空指针)。例如:#defineNULL0int*p=NULL;8.2.4指针变量的运算指针变量的运算是指指针变量所持有的地址为运算对象进行的运算,所以指针变量的运算实际上就是地址的运算。1.单个指针变量的算术运算

8、单个指针变量的算术运算,包括+、一、++、--运算符。C语言的地址运算规则规定:一个地址加上或减去一个整数n,其运算结果仍然是一个地址,它是以运算对象的地址为基点向后或向前偏移n*基类型数据所

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。