欢迎来到天天文库
浏览记录
ID:34365573
大小:442.00 KB
页数:116页
时间:2019-03-05
《新编c语言程序设计教程(本科)第10章new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章指针类型第10章指针类型10.1指针与指针变量10.2指针与数组10.3指针与字符串10.4指针与结构体10.5指针与链表10.6指针与函数10.7指针作基类型10.8程序设计举例第10章指针类型10.1指针与指针变量10.1.1指针变量的定义1.定义方法 形式: 类型标识符*变量标识符; 定义存放指定类型数据地址的指针变量。第10章指针类型例如: (1)int*p1,*p2,*p3; 定义指向整型数据的指针变量p1、p2、p3。 (2)float*q1,*q2,*q3; 定义指向实型数据的
2、指针变量q1、q2、q3。 (3)char*r1,*r2,*r3; 定义指向字符型数据的指针变量r1、r2、r3。第10章指针类型(4)structdate{intyear; intmonth; intday; }*t1,*t2,*t3; 定义指向structdate类型数据的指针变量t1、t2、t3。第10章指针类型说明: (1)指针变量可与普通变量混合定义,指针变量的定义与普通变量的定义用变量名前加“*”区分。例如: inti,*p;/*定义整型变量i,指针变量p*/(2)空指针“NULL”是一
3、特殊的指针数据,表示空地址,相当于整型数据中的0,字符数据中的空格。 第10章指针类型(3)指针变量只能用于存放指定类型数据的地址。如以上定义的一些指针变量,p1、p2、p3只能存放整型数据的地址,q1、q2、q3只能存放实型数据的地址,r1、r2、r3只能存放字符型数据的地址,t1、t2、t3只能存放structdate型数据的地址。第10章指针类型(4)指针变量不能直接赋以具体地址值,不能从键盘输入值。指针变量通过间接赋以相关数据的地址,或调用存储空间分配函数得到值。例如: inti,j,k;
4、int*p1=&i,*p2=&j,*p3=&k;/*p1得到i的地址,p2得到j的地址,p3得到k的地址*/第10章指针类型(5)指针类型隐含在指针变量的定义中。例如,在上面定义指针变量p1、p2、p3时,实际上在背后隐含定义了一指向整型数据的指针类型,从形式上可以将int*看成是指向整型数据的指针类型。 与数组定义一样,通过typedef可以将指针类型与指针变量分离。例如,上面定义的指针变量p1、p2、p3,可以改用如下形式: typedefint*INTPOINT; INTPOINTp1,p2,
5、p3;第10章指针类型(6)指针变量本身占有2字节的存储空间。 (7)“void*”指针类型定义的指针变量,不指向哪一种特定类型的数据,在实际使用时通过强制类型转换成指向特定类型的数据。第10章指针类型2.指针变量所指向的变量特定类型的数据 例如,对指针变量p1、p2、p3,假定已有值,*p1、*p2、*p3代表指针变量p1、p2、p3所指向的数据,也就是p1、p2、p3的值对应的存储单元里存放的数据,称为指针变量所指向的变量,简称指针指向变量。如果指针变量p1、p2、p3分别存放整型变量i、j、k
6、的地址,则p1指向i,p2指向j,p3指向k。图10-1来直观反应指针变量与指针指向变量的关系。第10章指针类型图10-1第10章指针类型指针指向变量*p1、*p2、*p3相当于整型变量i、j、k。例如:int*p=&i; scanf(“%d”,p);/*等价于scanf(“%d”,&i)*/printf(“%d”,*p);/*等价于printf(“%d”,i)*/第10章指针类型10.1.2指针的运算1.引用运算1)取地址运算(&) 取地址运算“&”,对指针变量进行取地址运算,可以得到指针变量本身
7、的地址。第10章指针类型2)取内容运算(*) 取内容运算“*”,前称指针运算,用于获取地址数据对应存储单元的内容。取内容运算的优先级与取地址运算优先级相同,也为第2级,结合性亦为右结合。对指针变量,进行取内容运算可以得到指针变量所指向的数据。 取内容运算与取地址运算实质上是一对互逆运算。例如:inta,*p=&a; *(&a)就是a,&(*p)就是p;p指向a,*p与a等价。第10章指针类型2.算术运算1)加减运算加减运算常用于数组的处理。对指向一般数据的指针,加减运算无实际意义。例如: inta[
8、10],*p=a,*x; x=p+3;/*实际上是p加上3*2个字节赋给x,x指向数组的第三个分量*/对于不同基类型的指针,指针变量“加上”或“减去”一个整数n所移动的字节数是不同的。例如: floata[10],*p=a,*x; p=p+3;/*实际上是p加上3*4个字节赋给x,x依然指向数组的第三个分量*/第10章指针类型2)自增自减运算 指针变量自增、自减运算具有上述运算的特点,但有前置后置、先用后用的考虑,务请小心。例如: inta[10],*p=a,*x;
此文档下载收益归作者所有