资源描述:
《C语言第8章指针 ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章指针8.1指针与指针变量8.2指针与函数8.3指针与数组8.4指针与字符串8.5指针数组与命令行参数8.6程序举例1字符类型(char)整型(short,int,long,unsigned)单精度型(float)实型(浮点型)双精度型(double)枚举类型(enum)数组类型([])构造类型结构体类型(struct)共用体类型(union)指针类型(*)空类型(void)基本类型数据类型回忆:C语言的数据类型28.1指针与指针变量8.1.1指针的概念1.内存地址与变量地址内存地址:内存是计算机用于存储数据的存储器,以一个字节作为存储单元,为了便于访问,给每个字节单元一个唯
2、一的编号,第一字节单元编号为0,以后各单元按顺序连续编号,这些单元编号称为内存单元的地址。变量地址:变量所分配存储空间的首字节单元地址(字节单元编号)。32.变量的三要素:名字、类型与值每个变量都通过变量名与相应的存储单元相连系,具体分配哪些单元给变量,由C编译系统完成变量名到对应内存单元地址的变换。变量分配存储空间的大小由类型决定。变量的值则是指相应存储单元的内容。4通常称变量p指向变量a。…40004800pa4000373.内存存取方式直接存取:把直接按变量名或地址存取变量值的方式称为“直接存取”方式。间接存取:通过定义一种特殊的变量专门存放内存或变量的地址,然后根据该地址
3、值再去访问相应的存储单元。54.指针的概念指针:它表示一个变量指向另一个变量这样的指向关系。所谓指针即地址。一个变量的指针即该变量的地址,如4000就是指向变量a的指针。指针变量:专门存放地址的变量,如p即是一个指针变量,它存放的是a的地址4000。68.1.2指针变量的定义与初始化1.指针变量的定义类型标识符*指针变量名;例:float*p1;(定义p1为指向实型变量的指针变量)char*p2;(定义p2为指向字符型变量的指针变量)7若有定义:inta,*p;语句仅仅定义了指针变量p,但指针变量并未指向确定的变量(或内存单元)。指针变量初始化:在定义指针时同时给指针一个初始值。
4、如:inta,*p=&a;400037pa2.指针变量初始化8&:取地址运算符*:取内容运算符如:inta=1,*p=&a;printf(“%d”,*p);3.与指针引用有关的两个运算符:&与*此处*是访问指针所指对象的运算符,与指针定义时的*不同。94.指针变量的引用①*指针变量名——代表所指变量的内容。②指针变量名——代表所指变量的地址。有定义:inta,*p=&a;用*p来表示p指向的对象a,*p与a是等价的。*p可以象普通变量一样使用。例如:a=12;*p=12;*p=*p+10;scanf("%d",&a);scanf("%d",p);printf("%d%d",*p,
5、a);10OperatorsAssociativity()[]->.lefttoright!~++--+-*&(type)sizeofrighttoleft*/%lefttoright+-lefttoright<<>>lefttoright<<=>>=lefttoright==!=lefttoright&lefttoright^lefttoright
6、lefttoright&&lefttoright
7、
8、lefttoright?:righttoleft=+=-=*=/=%=&=^=
9、=<<=>>=righttoleft,lefttorightTablePrecedenceandAs
10、sociativityofOperators111.inta=1,*p=&a;&*p的含意是什么?思考答:&*p即&(*p),与&a等价,也与p等价。2.*&a的含意是什么?答:*&a即*(&a),与*p等价,也与a等价。答:a++3.(*p)++相当于什么?4.scanf("%d",&*p);printf("%d",*&a);printf("%d",(*p)++);128.1.3指针运算1.指针的赋值运算例如:inta,b,*pa,*pb;pa=&a;pb=&b;paapbb(1)将变量地址值赋给指针变量,使指针指向该变量。13(2)相同类型的指针变量间的赋值如:pb=pa;即
11、pa,pb都指向变量a,此时a、*pa、*pb是等价的。注意:只有相同类型的指针变量才能相互赋值。&a&bpapba,*pab,*pb&a&apapba,*pa,*pbb14(3)给指针变量赋空值给指针变量赋空值,说明该指针不指向任何变量。“空”指针值用NULL表示,NULL是在头文件stdio.h中预定义的常量,其值为0。如:#include"stdio.h"int*pa=NULL;亦可以用下面的语句给指针赋“空值”:pa=0;这里指针pa并非指向0地址单元,而是具有一个确定的