C语言程序设计善于利用指针.ppt
《C语言程序设计善于利用指针.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计善于利用指针.ppt(32页珍藏版)》请在三一办公上搜索。
1、1,第8章 善于利用指针,C 语言程序设计,北京航空航天大学 交通科学与工程学院徐国艳,2/56,指针的概念指针和指针变量指针与数组指针做函数参数,8.1 8.2 8.38.4,章节内容,3/56,访问内存的两种方式:直接访问:按地址直接存取&a间接访问:通过指针i间接存取,8.1指针的概念,什么是指针?如何使用指针?,对于int a=10,c=5;float b=3.5;,内存分配,例,a的地址,a的内容,指针,a的地址,a是整型变量,存放内容i是指针变量,存放地址,a的地址a的指针,指向a,4/56,用指针i访问:用i+可以指向字符串中的每个地址!,8.1指针的概念,用指针实现顺序访问,c
2、har c=“GOOD!”;,例,为什么要使用指针?,5/56,8.2 指针和指针变量,一、指针、指针变量与指向,例:int a=10,*i,x;float b=3.5,*p1;char c,*p2=,10,i,*i,a1000,指针地址指针变量:存放地址的变量指针变量是一种新的数据类型,1000是a 的指针i是指针变量,*i=a,二、指针变量的定义与赋值,数据类型*指针变量名,1000,*i是i指向的变量a,指针运算,*i,*i,定义指针变量,指针初始化,指针赋值,6/56,三、指针变量的赋值与操作,*-指针运算符&-取地址运算符同级,右结合,指针变量的赋值,int a=3,*p,*p1,*
3、p2,*p3,p4;p=,指针变量的操作,int a=3,*p,*p1,k;p=/*因为&*p=&a,操作结果使p1指向a*/,7/56,四、指针的引用,例8.1:指针的赋值与输出void main()int a=10,b,c,*p;p=,输出结果:10,10,1010,1739919326,1739919326,printf(“%d,%dn,*,第三行输出结果:10,1739919326,指针赋值,指针运算,指针输出,8/56,方法1:目标变量值不变,改变指针变量的指向求解。void main()int a,b,*p1,*p2,*p;p1=,a=6,b=8max=8,min=6,8.2 指针
4、和指针变量,【例8.2】输入a、b两个整数,使用指针变量按大小顺序输出这两个整数。,9/56,方法2:利用指针变量直接改变目标变量的值求解。void main()int a,b,t,*p1,*p2;p1=,a=8,b=6max=8,min=6,8.2 指针和指针变量,6,10/56,指针的加减运算,8.2 指针和指针变量,五、指针的基本运算,void main()int a=10,20,30,40,50,*p1,*p2;p1=p2=a;printf(p1=%u,*p1=%dn,p1,*p1);p2+=3;printf(p2=%u,*p2=%dn,p2,*p2);,P2=416,*p2=40,指
5、针加减运算要点:只有当指针变量指向数组时指针的加减运算才有意义。指针变量可加减一个整型表达式。如:p1+、p2+3、p2-、p2-2。指针的加减运算是以基类型为单位(即sizeof(类型))的。两个指针变量不能作加法运算,只有当两个指针变量指向同一数组时,进行指针变量相减才有实际意义。如:p2-p1。,11/56,指针的关系运算,8.2 指针和指针变量,五、指针的基本运算,指向同一数组的两个指针可以进行关系运算,表明它们所指向元素的相互位置关系。如:p2 p1、p2=p1。指针与一个整型数据进行比较是没有意义的。不同类型指针变量之间比较是非法的。NULL可以与任何类型指针进行=、!=的关系运算
6、,用于判断指针是否为空指针。,404408412416420,12/56,int i,*p p=,int*p;float*q;p=q;,int i;float*p;p=,int*p;p=100;,是真?是假?,判断,指针变量只存放地址!,一个指针变量不能指向与其类型不同的变量!,我是真的,你对了吗?,应在类型相同的指针变量之间赋值,13/56,数组名是该数组的指针 a是数组的首地址(即a0的地址),是一个指针常量。a=&a0,a+1=&a1,a+9=&a9 数组元素的下标表示法:a0,a1,ai,a9 数组元素的指针表示法:*(a+0),*(a+1),*(a+i),*(a+9),8.3 指针与
7、数组,8.3.1 指向数组的指针,1.一维数组的指针,例如:int a10,*p;,14/56,当p指向a0时,用p表示数组元素 下标法:p0,p1,pi,p9 指针法:*(p+0),*(p+1),*(p+i),*(p+9),8.3 指针与数组,8.3.1 指向数组的指针,1.一维数组的指针,指向一维数组元素的指针变量 由于数组元素也是一个内存变量,所以此类指针变量的定义和使用与指向基本变量的指针变量相同。例如:int a10,*p;p=a;(或 p=),a,15/56,【例8.3.1】用指针输出数组元素。#include stdio.hvoid main()int a10,i,*p;for(
8、i=0;i10;i+)scanf(%d,a+i);for(i=0;i10;i+)printf(%4d,*(a+i);printf(n);for(p=a,i=0;i10;i+)printf(%4d,*(p+i);printf(n);,8.3 指针与数组,8.3.1 指向数组的指针,1.一维数组的指针,12345678910,1 2 3 4 5 6 7 8 9 10,1 2 3 4 5 6 7 8 9 10,16/56,【例8.3.2】用指针法输入输出数组元素。main()int a10,i,*p;for(p=a;pa+10;p+)scanf(%d,p);for(p=a;pa+10;p+)prin
9、tf(%d,*p);printf(n);,8.3 指针与数组,8.3.1 指向数组的指针,1.一维数组的指针,10,17/56,数组名是地址,指向数组的指针变量存放的也是地址。通过指针变量也可以引用数组元素。p=&a0 等效于 p=a。,数组名和指向数组的指针变量的区别:指针变量p是变量可以赋值,数组名a是地址常量不能赋值。,8.3 指针与数组,8.3.1 指向数组的指针,用指针变量引用数组元素,必须关注其当前值。例如:p=p+3*(p-1)、p-1等价于a2,18/56,【例8.4】输入五个整数,使用指针变量将这五个数 按从小到大排序后输出。,8.3 指针与数组,#include“stdio
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 善于 利用 指针

链接地址:https://www.31ppt.com/p-6504061.html