CHAN 第七讲 指针 北大青鸟 P-
第七讲 指针
本节学习目标 指针指针与指针变量 指针的声明与使用 指针与数组间的关系 动态分配内存 北大青鸟 P-
本节学习目标 • 指针指针与指针变量 • 指针的声明与使用 • 指针与数组间的关系 • 动态分配内存
课前复习 维数组的定义与使用 二维数组的定义与使用 字符数组的使用 北大青鸟 P-
课前复习 • 一维数组的定义与使用 • 二维数组的定义与使用 • 字符数组的使用
课前练习 若有以下定义语句 float a[1l={0,1,2,3,4,5,6,7,8,9,10 以下描述错误的是() A)a数组在内存中占44个字节 ·B)a数组的最后一个元素是a[0 C)a数组的第一个元素是aO] D)以上定义语句给a数组所赋初始值 是整数,因此不能正确赋初始值 北大青鸟 P-
课前练习 • 1.若有以下定义语句: • float a[11]={0,1,2,3,4,5,6,7,8,9,10} • 以下描述错误的是() • A)a数组在内存中占44个字节. • B) a数组的最后一个元素是a[10]. • C) a数组的第一个元素是a[0] • D)以上定义语句给a数组所赋初始值 是整数,因此不能正确赋初始值.
数据的存储机制 内存地址 变量地址 一内存中存储单元的 系统标识变量在内 编号 存中的起始位置。 北大青鸟 P-
数据的存储机制 • 内存地址 – —内存中存储单元的 编号。 • 变量地址 – —系统标识变量在内 存中的起始位置
数据的存储机制(续) 直接访问 间接访问 #include #include void maino void mair int a b sum=0 int a, b, su; int*p_1,*p_2; printi("请输入a和b的值: printi("请输入a和b的值: scanf("%od, %od", &a, &b) scanf("%od, %od", &a, &b) p 1=&a; p 2=&b sum=a+b sum=*p 1+*p 2 printf sum od\n", sum) printf("sum=% n",sum) 北大青鸟 P-
数据的存储机制(续) • 直接访问 – #include – void main() – { – int a,b,sum; – printf("请输入a和b的值: "); – scanf("%d,%d",&a,&b); – sum=a+b; – printf("sum=%d\n",sum); – } • 间接访问 – #include – void main() – { – int a,b,sum=0; – int *p_1,*p_2; – printf("请输入a和b的值: "); – scanf("%d,%d",&a,&b); – p_1=&a;p_2=&b; – sum=*p_1+*p_2; – printf("sum=%d\n",sum); – }
指针的功能 方便一个函数向另一个函数的过渡 能通过指针的移动来改变指针所指向的 数据,不需要去移动变量或数组。 可以实现动态内存的更新。 北大青鸟 P-
指针的功能 • 方便一个函数向另一个函数的过渡。 • 能通过指针的移动来改变指针所指向的 数据,不需要去移动变量或数组。 • 可以实现动态内存的更新
指针与指针变量 什么是指针? 指针变量 变量的内存地址。 用来存放变量地址的 变量 变量值 56 1000 指针 1000 (内存地址) a→变量名b→指针变量 北大青鸟 P-
指针与指针变量 • 什么是指针? – 变量的内存地址。 • 指针变量 • 用来存放变量地址的 变量。 56 a 变量名 1000 (内存地址) 变量值 1000 b 指针 指针变量
指针声明 格式 数据类型*指针变量名; 北大青鸟 P-
指针声明 • 格式 数据类型 *指针变量名;
基类型:指针所指 向的数据类型。决 定了指针每次移动 声明注意事项 的步长。 *”表示声明的指针变量,不是代表指针 运算符。 *”前必须指定数据类型(基类型), 其主要功能是指指针所指向对象的数据 类型 北大青鸟 P-
声明注意事项 • “*”表示声明的指针变量,不是代表指针 运算符。 • “*”前必须指定数据类型(基类型), 其主要功能是指指针所指向对象的数据 类型。 基类型:指针所指 向的数据类型。决 定了指针每次移动 的步长