软件技术基础之指针和结构体课件ppt课件.ppt
《软件技术基础之指针和结构体课件ppt课件.ppt》由会员分享,可在线阅读,更多相关《软件技术基础之指针和结构体课件ppt课件.ppt(23页珍藏版)》请在三一办公上搜索。
1、C语言回顾 指针,1、内存:由存储单元组成。其特点为存储单元是线性连续的。存储单元的最小单位是 字节。,2、内存地址:正如我们的住房都有门牌号码一样,为了访问内存中的某个存储单元,我们也要为它编号,这种编号称为内存地址。利用内存地址我们可以访问该地址标识的存储单元。,一、指针的相关基本概念:,Byte,3、程序中一旦定义了一个变量,该变量在内存中就将占用一定的存储单元。变量占用的存储单元总是n(n0)个连续的字节,开始字节的地址,就是变量的地址也可称为该存储单元的首地址。,二、指针的基本概念:,指针就是变量的地址。与此对应,在C语言中使用一类专门的变量即指针变量来存放变量的地址。因此,指针变量
2、是存放地址数据的变量。,从右图可知,指针变量和一般变量一样,仅仅是变量的内容为变量地址的变量而已。,指针变量pi,变量i,变量值,变量地址(指针),变量地址存入指针变量,指向,这里变量和指针变量的类型必须一致。,一般而言,指针变量只能存放某一种数据类型的变量的地址,由此可将指针变量分为:整型指针变量、实型指针变量和字符型指针变量等等,指针变量的类型表明了其指向的存储单元中存放的数据的类型。,当把变量的地址存入指针变量后,我们就认为 这个指针指向了该变量。,指针的定义方式如下:数据类型名*指针变量名;,在定义指针时要注意以下几个问题:,int*prt1,*ptr2;,三、指针变量的定义:,变量前
3、面的“*”不能省略,如果写成:,则表示 ptr2 被定义为整型变量而非整型指针变量。,int*prt1,ptr2;,定义中的“*”表示所定义的变量是指针变量,但 指针变量名为ptr1、ptr2而非*ptr1、*ptr2。,指针变量只能指向定义时所规定类型的变量。如 ptr1、ptr2只能指向整型变量而不能指向实型或 字符型变量。,定义指针变量后,并未确定该变量指向何处。即是 说该变量的值是不确定的,在引用该指针变量前,必须先让它指向一个变量或在内存中为其分配一个 相应的存储单元。,四、指针的“&”、“*”和赋值运算:,取地址运算符&的作用是取变量的地址。如:&i 表示求变量 i 的地址。,引用
4、运算符*的作用是取指针指向变量的内容。如:*ptr 表示求指针 ptr 所指向变量的内容。,1、&取地址运算和*引用运算,&运算和*运算是一对逆运算。,先对变量 i 作取地址运算,其地址值赋给 point,point指针就已指向变量 i,*point的值为3。给*point 赋值相当于给 i 赋值。,main()int i=3;int*point;point=,2、指针的赋值运算,指针的赋值运算可以是以下两种方式:把地址的值赋给指针变量;把一个指针的值赋给另一个指针。,注意:指针的值为空时,C语言中常用一符号常量 NULL给其赋值。,main()float flt;float*f_ptr=.,
5、下面我们来看一个和“&”“*”和指针赋值语句相关的例子,数组在内存中占用连续的存储单元。指针最常见的一种用途就是指向数组元素。当一个指针指向数组元素后,就可以用它灵活、快速地处理数组元素,从而体现出指针的优势。,main()int*ptr1,*ptr2.*ptr3;int ary5=2,4,8,16,32;ptr1=,五、指针和数组:,(一)、指针和一维数组,C语言中规定数组名代表数组的首地址,即第一个元素的地址。因此ptr3=ary 等价于 ptr3=&ary0;当指针指向数组的首地址时,指针可以象数组一样使用。若指针ptr指向了数组ary的首地址,就有:*(ptr+2)、ptr2、ary2
6、、*(ary+2)这四种形式都表示了数组的第三个元素。,运行结果:*(ptr+2)=5 ptr2=5 ary2=5*(ary+2)=5,#includemain()int*ptr;int ary5=2,9,5,45,3;ptr=ary;printf(“*(ptr+2)=%dn”,*(ptr+2);printf(“ptr2)=%dn”,ptr2);printf(“ary2)=%dn”,ary2);printf(“*(ary+2)=%dn”,*(ary+2);,但是,指针变量与数组名有区别:指针变量是地址变量,数组名是地址常量。即是说指针变量的内容可以在程序运行的过程中被改变,而数组名一旦被初始化
7、,它的值就不能被改变了。,main()int*ptr,i,ary10;ptr=,例要求先打印一个数组中的各元素,然后逆序再打印一遍。,(二)、指针的加减运算:,、指针与整型值的加减的结果是使该指针下移或上移整型值所指定个数的存储单元后的地址。存储单元的大小就是该指针的数据类型所需的内存大小。,、指针之间不允许加运算。,、指针之间的减运算的含义是计算这两个指针相差几个存储单元,其结果是一个整数,可由下式计算:,ptr1-ptr2=(ptr1的值-ptr2的值)/sizeof(指针的类型),1、指针的加减运算(+、-):指针的加减运算有两种形式一是指针与整型值的加减运算;另一种是指针与指针的减运算
8、。,main()int*ptr1,*ptr2,x;int ary5=2,4,6,8,10;ptr1=ary;ptr2=ptr1+3;x=ptr2-ptr1;,2、指针的自加减运算(+、-、+=、-=):+和+=运算是将指针下移一个或几个存储单元;-和-=运算是将指针上移一个或几个存储单元。,main()int*ptr;int ary5=2,4,6,8,10;ptr=ary;ptr+=3;ptr-;ptr-=2;ptr+;,(四)、字符指针与字符串:,main()char string=“Hell0”;printf(“%sn”,string);,main()char*string=“Hell0”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件技术 基础 指针 结构 课件 ppt

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