C语言教案8-指针.ppt
《C语言教案8-指针.ppt》由会员分享,可在线阅读,更多相关《C语言教案8-指针.ppt(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、地址和指针 在计算机中,内存是用来存储程序和数据的部件。为了便于存储,通常把内存划分成许多个存储单元,并且对存储单元进行编号,存储单元的编号称为地址。地址通常以字节为单位进行编址。 在C语言中地址是指数据在内存中存放的起始位置,如:变量(整型、浮点型、字符型、数组元素)的地址 用 & 表示数组的地址 用数组名表示。数组的地址就是数组中第一个元素的地址字符串常量的地址 直接写出字符串,表示字符串的第一个字符的地址函数的地址 用函数名表示。函数的地址就是函数的入口地址指针:存放地址的变量叫指针,也叫指针变量。指针变量的值是另一变量的地址,指针变量的值可以改变。指针变量的内容是所指变量的值。 地址是
2、一个常量如&i 、数组名如a( 或&a0 ),其值不能改变。指针变量指针变量的说明方式: *例:int *ptr,i=5; i是一个整型变量,ptr是一个指向整型变量的指针 ptr=&i; &i是变量i的地址(指针常量),ptr是一个指针(指针变量)指针变量的运算符:* 取指针变量所指的内容& 取变量的地址上例中,*ptr=i &i=ptr &*ptr=ptr *&i=i注意: * 出现在C程序的不同场合具有不同的含义。例81#include void main() int a=5,b=10,c=15; int *pa,*pb,*pc; pa=&a; pb=&b; pc=&c; printf(
3、%dt%dt%dn,a,b,c); printf(%dt%dt%dn,*pa,*pb,*pc); printf(%dt%dt%dn,*&a,*&b,*&c); printf(%xt%xt%xn,pa,pb,pc); printf(%xt%xt%xn,&a,&b,&c); printf(%xt%xt%xn,&*pa,&*pb,&*pc); printf(%xt%xt%xn,&pa,&pb,&pc);指针作为函数参数 比较下面的例子#includevoid exchange(int x,int y) int temp; temp=x; x=y; y=temp;void main() int a=5
4、,b=8; exchange(a,b); printf(a=%dtb=%d,a,b);运行结果:a=5 b=8#includevoid exchange(int *x,int *y) int temp; temp=*x; *x=*y; *y=temp;void main() int a=5,b=8; exchange(&a,&b); printf(a=%dtb=%d,a,b);运行结果: a=8 b=5指针与数组 在C语言中,数组名是指针常量,它代表的是数组的首地址,也是数组第一个元素的地址。设有: int data10;则:data=&data0 data+i=&datai *(data+i
5、)=datai例:83data data0data+1 data1data+i datai例:使用指针作为形参和实参#include#includeint min(int *p,int n);main() static int a7=-1,9,7,3,-100,0,8; clrscr(); printf(minvalue=%d,min(a,7);int min(int *p,int n) int i,minv; minv=*p; for(i=1;i*(p+i) minv=*(p+i);return minv;数组名做为实参,传递数组的首地址(地址常量)指针变量做为形参,接收数组的首地址例:以数
6、组和数组元素形式处理指针#include#includeint min(int *p,int n);main() static int a7=-1,9,7,3,-100,0,8; clrscr(); printf(minvalue=%d,min(a,7);int min(int p ,int n) *p 改为 p ,用下标法表示指针对象 int i,minv; minv=p0; *p改为 p0 for(i=1;ipi) minv=pi; *(p+i)改为 pireturn minv; pi表示当前指针后第i个对象P 形式上像数组,实际上按指针方式处理例:再探数组和指针#include#incl
7、udevoid main() int a7=-1,9,7,3,-100,0,8; int i,*p; clrscr(); p=a; for(i=0;i7;i+) printf(%dt,ai); printf(n); for(i=0;i7;i+) printf(%dt,pi);两次运行结果相同指针的运算p=&i将变量i的地址赋给指针pp=array将一维数组的首地址赋给指针pp=&arrayi 将数组元素的地址赋给指针pp1=p2将指针变量p2的值赋给指针变量p1p1、p2指向同一个变量的地址p=NULL将指针p赋空值,不指向任何对象p+使p指向下一个对象区别于i+、i-P-使p指向前一个对象p
8、+=i使p指向当前对象后第i个对象区别于x=x+i、x=x-ip-=i使p指向当前对象前第i个对象p+i指向当前对象p后第i个对象指针p不变p-i指向当前对象p前第i个对象指针运算例:#include void main() int a8=-1,9,7,3,-100,0,8,5; float b8=0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8; int *pa,*pa1; float *pb; pa=a; pb=b; printf(%u: %dtt%u: %3.1fn,pa,*pa,pb,*pb); pa+; pb+; printf(%u: %dtt%u: %3.1fn,pa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 教案 指针
限制150内