资源描述:
《语言程序设计指针ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言程序设计指针指针是变量的地址ci变量的存贮方式计算机的内存是线性空间。变量定义时,系统根据变量的类型分配一段连续的存贮单元。unsignedi=64;charc='A';floatff=3.14;longk=54321;doublefd=2.71828;64'A'3.14543212.718282byte1byte4byte4byte8byte......0B3C01000B3C01010B3C01020B3C01030B3C01040B3C01050B3C01060B3C01070B3C01080B3C01090B3C
2、010A0B3C010B0B3C010C0B3C010D0B3C010E0B3C010F0B3C01100B3C01110B3C0112ffkfd最小存贮单位是字节,每个字节都有一个唯一的编号,即地址。变量所占空间的第一个字节的地址称为变量的地址。通过变量的地址也可以访问变量!变量的访问方式用变量名访问b=66;FFFD转换地址FFFD66用地址访问(FFFD)=66;*p=66;指针:专门用于保存地址的变量。保存地址p指针的定义类型└┘*变量名;int*p;float*pf;char*ps;注意事项:1.*是指针的标志,表明
3、该变量为指针变量,其所保存的内容为变量的地址,不可省略,但它并不是变量的一部分;2.指针变量有类型,只能保存相应类型变量的地址;3.指针变量的命名规则与普通变量相同。指针的操作a????????????????p&取地址操作:p=&a;取内容操作:b=*p;b????????????????p*&和*是一对互逆操作获取变量地址:&inti,*p;p=&i;注意与&&的区别获取指针指向的内容:*inti=66,j,*p;p=&i;j=*p;注意与定义中*的区别*和&是一对互逆操作。指针赋值inti,*p1,*p2;p1=&i;p
4、2=p1;指针的基本使用0A1D10110A1D10120A1D10130A1D10140A1D10150A1D1016ip0A1D10110A1D10110A1D10120A1D10130A1D10140A1D10150A1D10160A1D10170A1D1018ip0A1D1011j6666相当于i指向指针的初始化与普通变量一样,指针可以在定义的同时初始化。inta;floatdata;charc;int*pa=&a;float*pdata=&data;char*pc=&c;double*pd=NULL;1.&是取变量地
5、址的操作;2.指针所保存的具体值是不固定的;3.指针的初始化也称将指针指向某处;4.不指向任何地方的指针定义为空指针NULL;5.未初始化或未赋值的指针不能引用。指针基本应用实例main(){inta,b,c,*p1,*p2,*p3;a=10;b=25;p1=&a;p2=&b;p3=&c;printf("%d,%d,%d,%d",a,b,*p1,*p2);c=a;a=b;b=c;printf("%d,%d,%d,%d",a,b,*p1,*p2);*p3=a;*p1=*p2;b=*p3;printf("%d,%d,%d,
6、%d",a,b,*p1,*p2);}执行结果:10,25,10,2525,10,25,1010,25,10,25例1:用星号加指针的方法访问变量与用变量名访问变量是一样的。指针的运算a[0]p1a[1]a[2]a[3]a[4]p2p3p4p5指针与整数加减运算——指针移位inta[5];int*p1,*p2,*p3,*p4,*p5;p1=&a[0];p2=p1+4;p3=p2-2;p4=p1;p4++;p5=p2;p5--;注意:指针的移位是与变量类型相关的。指针间的关系运算——位置比较if(p5>p3)...含义:如果p
7、5在p3的后面;if(p1==p3)...含义:如果p1和p3指向同一个地址;if((p18、p2;p3=p1/p2;指针基本应用中常见的错误←p2将是一个整型变量←不会将地址1000赋给p←a将得到一个不确定的值←向不确定的空间写数据,严重错误!后果无法预料,也难以发现。指针变量作为函数参数swap(int*p1,int*p2);main(){inta,b,*pa,