资源描述:
《C语言教案8-指针.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言程序设计第8章指针地址和指针在计算机中,内存是用来存储程序和数据的部件。为了便于存储,通常把内存划分成许多个存储单元,并且对存储单元进行编号,存储单元的编号称为地址。地址通常以字节为单位进行编址。在C语言中地址是指数据在内存中存放的起始位置,如:变量(整型、浮点型、字符型、数组元素)的地址用&表示数组的地址用数组名表示。数组的地址就是数组中第一个元素的地址字符串常量的地址直接写出字符串,表示字符串的第一个字符的地址函数的地址用函数名表示。函数的地址就是函数的入口地址指针:存放地址的变量叫指针,也叫指针变量。指针变量的值是另一变量的地址,指针变量的
2、值可以改变。指针变量的内容是所指变量的值。地址是一个常量如&i、数组名如a(或&a[0]),其值不能改变。指针变量指针变量的说明方式:<类型说明符>*<标识符>例:int*ptr,i=5;i是一个整型变量,ptr是一个指向整型变量的指针ptr=&i;&i是变量i的地址(指针常量),ptr是一个指针(指针变量)指针变量的运算符:*取指针变量所指的内容&取变量的地址上例中,*ptr==i&i==ptr&*ptr==ptr*&i==i注意:*出现在C程序的不同场合具有不同的含义。例8-1#includevoidmain(){inta=5,b
3、=10,c=15;int*pa,*pb,*pc;pa=&a;pb=&b;pc=&c;printf("%dt%dt%d",a,b,c);printf("%dt%dt%d",*pa,*pb,*pc);printf("%dt%dt%d",*&a,*&b,*&c);printf("%xt%xt%x",pa,pb,pc);printf("%xt%xt%x",&a,&b,&c);printf("%xt%xt%x",&*pa,&*pb,&*pc);printf("%xt%xt%x",&pa,&pb,&pc);}
4、指针作为函数参数-比较下面的例子#includevoidexchange(intx,inty){inttemp;temp=x;x=y;y=temp;}voidmain(){inta=5,b=8;exchange(a,b);printf("a=%dtb=%d",a,b);}运行结果:a=5b=8#includevoidexchange(int*x,int*y){inttemp;temp=*x;*x=*y;*y=temp;}voidmain(){inta=5,b=8;exchange(&a,&b);printf("a=
5、%dtb=%d",a,b);}运行结果:a=8b=5指针与数组在C语言中,数组名是指针常量,它代表的是数组的首地址,也是数组第一个元素的地址。设有:intdata[10];则:data==&data[0]data+i==&data[i]*(data+i)==data[i]例:8-3data→data[0]data+1→data[1]…data+i→data[i]例:使用指针作为形参和实参#include#includeintmin(int*p,intn);main(){staticinta[7]={-1,9,7,3
6、,-100,0,8};clrscr();printf("minvalue=%d",min(a,7));}intmin(int*p,intn){inti,minv;minv=*p;for(i=1;i*(p+i))minv=*(p+i);returnminv;}数组名做为实参,传递数组的首地址(地址常量)指针变量做为形参,接收数组的首地址例:以数组和数组元素形式处理指针#include#includeintmin(int*p,intn);main(){staticinta[7]={-1,9,
7、7,3,-100,0,8};clrscr();printf("minvalue=%d",min(a,7));}intmin(intp[],intn)*p改为p[],用下标法表示指针对象{inti,minv;minv=p[0];*p改为p[0]for(i=1;ip[i])minv=p[i];*(p+i)改为p[i]returnminv;}p[i]表示当前指针后第i个对象P[]形式上像数组,实际上按指针方式处理例:再探数组和指针#include#includevoidmain(){inta[
8、7]={-1,9,7,3,-100,0,8};inti,*p;clrscr();p=a;for