第9章指针 指针是C语言的重要概念和特色。使用指针, 可以使程序更加简洁、紧凑、高效。 教学目的: 掌握指针的概念,指针变量的概念、定义与应 用,指向1维数组(字符串)的指针变量应用,指针数 组与带参主函数: 了解返回指针值的函数等。 2024/10/28 1
2024/10/28 1 第9章 指 针 指针是C语言的重要概念和特色。使用指针, 可以使程序更加简洁、紧凑、高效。 教学目的: 掌握指针的概念,指针变量的概念、定义与应 用,指向1维数组(字符串)的指针变量应用,指针数 组与带参主函数; 了解返回指针值的函数等
教学内容: 9.1指针和指针变量的概念 9.2*指针变量的定义与应用 9.3*1维数组的指针与列指针变量 9.4字符串的指针和指向字符串的指针变量 9.5指针数组与主函数main0的参数 9.6返回指针值的函数 本章要点 本章作业与上机实践 2024/10/28 2
2024/10/28 2 教学内容: 9.1 指针和指针变量的概念 9.2* 指针变量的定义与应用 9.3* 1维数组的指针与列指针变量 9.4 字符串的指针和指向字符串的指针变量 9.5 指针数组与主函数main()的参数 9.6 返回指针值的函数 本章要点 本章作业与上机实践
9.1*指针和指针变量的概念 1.内存地址一内存中存储单元的编号。 (1)内存中拥有大量的存储单元(1字节)。为了方 便管理,必须为每一个存储单元编号—存储单元的 “地址”。 每个存储单元,都有一个惟一的地址。 (2)在地址所标识的存储单元中,存放数据。 类比:住址(宿舍编号)与人。 2024/10/28 3
2024/10/28 3 9.1* 指针和指针变量的概念 1.内存地址──内存中存储单元的编号。 (1)内存中拥有大量的存储单元(1字节)。为了方 便管理,必须为每一个存储单元编号——存储单元的 “地址”。 每个存储单元,都有一个惟一的地址。 (2)在地址所标识的存储单元中,存放数据。 类比:住址(宿舍编号)与人
2.变量地址一一系统分配给变量的内存单元的起 始地址。 假设有如下程序: void main() int num; scanf("od",&num); printf("num-%d n",num); 且系统分配给变量num的2个存储单元为3000和 3001,则起始地址3000就是变量num在内存中的地址。 2024/10/28 4
2024/10/28 4 2.变量地址──系统分配给变量的内存单元的起 始地址。 假设有如下程序: . void main( ) { int num; scanf("%d", &num); printf("num=%d\n", num); } 且系统分配给变量num的2个存储单元为 3000 和 3001,则起始地址3000就是变量num在内存中的地址
3.变量值的存取一一通过变量在内存中的地址进 行 系统存取变量num的方式可以有两种: (1)直接访问一直接利用 . 变量的地址进行存取 3000 3 num 用变量名num查找符号表 (编译程序建立),取出其起始 地址3000;然后访问num(将数 据送入/取出),如右图所示。 。 2024/10/28 5
2024/10/28 5 3.变量值的存取──通过变量在内存中的地址进 行 系统存取变量num的方式可以有两种: . . 3 . 3000 num (1)直接访问──直接利用 变量的地址进行存取 用变量名num查找符号表 (编译程序建立),取出其起始 地址3000;然后访问num(将数 据送入/取出),如右图所示
(2)间接访问一通过另一变量访问um的值 C语言规定:在程序中,可以定义一种特殊的变 量(称为指针变量),用来存放其它变量的地址。 假设:定义了1个指针变量nump,它被分配到 4000、4001单元,通过赋值语句“nump=#” 获得num的地址3000,如下图所示: 2024/10/28 6
2024/10/28 6 (2)间接访问──通过另一变量访问num的值 C语言规定:在程序中,可以定义一种特殊的变 量(称为指针变量),用来存放其它变量的地址。 假设:定义了1个指针变量num_p,它被分配到 4000、4001单元,通过赋值语句“ num_p =# ” 获得num的地址3000,如下图所示:
. 3000 3 num 4000 3000 num p 通过指针变量nump,存取变量num的过程如下: 首先找到指针变量nump的地址(4000),取出 其值3000(num的地址);然后存取num的值(3)。 2024/10/28 7
2024/10/28 7 通过指针变量num_p,存取变量num的过程如下: 首先找到指针变量num_p的地址(4000),取出 其值3000(num 的地址); 然后存取num的值(3)。 . 3000 . 3 . 3000 4000 num num_p
(3)两种访问方式的比较 类比:某人甲(系统)找某人乙(变量)办事 ①甲直接去找乙办事(即直接访问)。 ②甲委托丙(指针变量)去找乙办事。 2024/10/28 8
2024/10/28 8 (3) 两种访问方式的比较 类比:某人甲(系统)找某人乙(变量)办事 ①甲直接去找乙办事(即直接访问)。 ②甲委托丙(指针变量)去找乙办事
4.指针与指针变量 (I)指针一即地址,变量的地址称为该变量的指 针。 (2)指针变量一专门用于存储其它变量地址的变 量。 例如,变量nump是一个指针变量,其值是变 量um的地址。 [返回] 2024/10/28 9
2024/10/28 9 4.指针与指针变量 (1)指针──即地址,变量的地址称为该变量的指 针。 (2)指针变量──专门用于存储其它变量地址的变 量。 例如,变量num_p是一个指针变量,其值是变 量num的地址。 [返回]
9.2*指针变量的定义与应用 9.2.1指针变量的定义与相关运算 「案例9.1]指针变量的定义与相关运算示例。 #include "stdio.h" #include "conio.h" void main() 指向int型数据的指针变量pnt int num int=12,*p int; float num f-3.14,*p f char num ch='p',*p ch; 使pint指向变量num int p int=&num int: p f=&num f p_ch=&num ch; 2024/10/28 10
2024/10/28 10 9.2* 指针变量的定义与应用 9.2.1 指针变量的定义与相关运算 [案例9.1] 指针变量的定义与相关运算示例。 #include "stdio.h" #include "conio.h" void main( ) { int num_int=12, *p_int; float num_f=3.14, *p_f; char num_ch=’p’, *p_ch; p_int = &num_int; p_f = &num_f; p_ch = &num_ch; 指向int型数据的指针变量p_int 使p_int指向变量num_int