第10章指针类型 第10章指针类型 10.1指针与指针变量 10.2指针与数组 10.3指针与字符串 10.4指针与结构体 10.5指针与链表 10.6指针与函数 07指针作基类型 108程序设计举例 BACK
第10章 指针类型 第10章 指针类型 10.1 指针与指针变量 10.2 指针与数组 10.3 指针与字符串 10.4 指针与结构体 10.5 指针与链表 10.6 指针与函数 10.7 指针作基类型 10.8 程序设计举例
第10章指针类型 10.1指针与指针变量 10.1.1指针变量的定义 定义方法蕌 形式:蕌 类型标识符*变量标识符;蕌 定义存放指定类型数据地址的指针变量
第10章 指针类型 10.1 指针与指针变量 10.1.1 指针变量的定义 1. 定义方法 形式: 类型标识符 *变量标识符; 定义存放指定类型数据地址的指针变量
第10章指针类型 例如:蕌 (1)int*p1,*p2,*p3;蕌 定义指向整型数据的指针变量pl、p2、p3。蕌 (2)foat*q1,*q2,*q3;蕌 定义指向实型数据的指针变量q1、q2、q3。蕌 (3)char*r1,*r2,*r3;蕌 定义指向字符型数据的指针变量r1、r2、r3
第10章 指针类型 例如: (1) int *p1, *p2, *p3; 定义指向整型数据的指针变量p1、 p2、 p3。 (2) float *q1, *q2, *q3; 定义指向实型数据的指针变量q1、 q2、 q3。 (3) char * r1, *r2, *r3; 定义指向字符型数据的指针变量r1、 r2、 r3
第10章指针类型 (4) struct date蕌 { Int year;蕌 int month;蕌 int day;:蕌 }*t1,*t2,*t3;蕌 定义指向 Istruct date类型数据的指针变量tl、t2、t3
第10章 指针类型 (4) struct date {int year; int month; int day; } *t1, *t2, *t3; 定义指向struct date类型数据的指针变量t1、 t2、 t3
第10章指针类型 说明:蕌 (1)指针变量可与普通变量混合定义,指针变量的定 义与普通变量的定义用变量名前加“*区分。例如:蕌 inti,*p;/*定义整型变量i,指针变量p*{蕌 (2)空指针“NULL”是一特殊的指针数据,表示空地 址,相当于整型数据中的0,字符数据中的空格。蕌
第10章 指针类型 说明: (1) 指针变量可与普通变量混合定义, 指针变量的定 义与普通变量的定义用变量名前加“*”区分。例如: int i, *p; /*定义整型变量i, 指针变量p*/ (2) 空指针“NULL”是一特殊的指针数据,表示空地 址,相当于整型数据中的0,字符数据中的空格。
第10章指针类型 (3)指针变量只能用于存放指定类型数据的地址 如以上定义的一些指针变量,p1、p2、p3只能存放整 型数据的地址,q1、q2、q3只能存放实型数据的地址, r1、r2、r3只能存放字符型数据的地址,t1l、t2、t3只 能存放 [struct date型数据的地址
第10章 指针类型 (3) 指针变量只能用于存放指定类型数据的地址。 如以上定义的一些指针变量,p1、p2、p3只能存放整 型数据的地址,q1、 q2、 q3只能存放实型数据的地址, r1、r2、r3只能存放字符型数据的地址,t1、t2、 t3只 能存放struct date型数据的地址
第10章指针类型 (4)指针变量不能直接赋以具体地址值,不能从键 盘输入值。指针变量通过间接赋以相关数据的地址, 或调用存储空间分配函数得到值。例如:蕌 inti,j,k;蕌 intp1=&i,*p2=&j,*p3=&k;/pl得到i的地址, p2得到j的地址,p3得到k的地址*/
第10章 指针类型 (4) 指针变量不能直接赋以具体地址值,不能从键 盘输入值。指针变量通过间接赋以相关数据的地址, 或调用存储空间分配函数得到值。例如: int i, j, k; int*p1=&i,* p2=&j,* p3=&k;/* p1得到i的地址, p2得到j的地址, p3得到k的地址*/
第10章指针类型 (5)指针类型隐含在指针变量的定义中。例如,在上 面定义指针变量p1、p2、p3时,实际上在背后隐含定义 了一指向整型数据的指针类型,从形式上可以将int看成 是指向整型数据的指针类型。蕌 与数组定义一样,通过 ty pede可以将指针类型与指 针变量分离。例如,上面定义的指针变量p1、p2、p3, 可以改用如下形式:蕌 typedef int *INTPOiNT; HE INTPOINT pl, p2, p3;
第10章 指针类型 (5) 指针类型隐含在指针变量的定义中。例如,在上 面定义指针变量p1、p2、p3时,实际上在背后隐含定义 了一指向整型数据的指针类型,从形式上可以将int*看成 是指向整型数据的指针类型。 与数组定义一样,通过typedef可以将指针类型与指 针变量分离。例如,上面定义的指针变量p1、 p2、 p3, 可以改用如下形式: typedef int *INTPOINT; INTPOINT p1, p2, p3;
第10章指针类型 (6)指针变量本身占有2字节的存储空间 (7) Void*指针类型定义的指针变量,不指向哪 种特定类型的数据,在实际使用时通过强制类型转换 成指向特定类型的数据
第10章 指针类型 (6) 指针变量本身占有2字节的存储空间。 (7)“void *”指针类型定义的指针变量, 不指向哪一 种特定类型的数据,在实际使用时通过强制类型转换 成指向特定类型的数据
第10章指针类型 2.指针变量所指向的变量特定类型的数据蕌 例如,对指针变量pl、p2、p3,假定已有值,*pl、 *p2、*p3代表指针变量pl、p2、p3所指向的数据,也 就是pl、p2、p3的值对应的存储单元里存放的数据 称为指针变量所指向的变量,简称指针指向变量。 如果指针变量pl、p2、p3分别存放整型变量i、j、 k的地址,则pl指向i,p2指向j,p3指向k。图10-1来 直观反应指针变量与指针指向变量的关系
第10章 指针类型 2. 指针变量所指向的变量特定类型的数据 例如,对指针变量p1、p2、p3,假定已有值, *p1、 *p2、 *p3代表指针变量p1、p2、p3所指向的数据,也 就是p1、p2、p3的值对应的存储单元里存放的数据, 称为指针变量所指向的变量,简称指针指向变量。 如果指针变量p1、 p2、 p3分别存放整型变量i、 j、 k的地址, 则p1指向i, p2指向j,p3指向k。图10 - 1来 直观反应指针变量与指针指向变量的关系