1、 第1页
时
间
11 月 25日
星期 2
课
题
指针和指针变量
教学目标
掌握指针和指针变量的定义以及使用方法
教学重点
指针和指针变量的定义及使用
教学难点
指针变量的定义及使用
课 型
公共课
教学媒体
多媒体
教法选择
讲授,举例,演示
教 学 过 程
教法运用及板书要点
第七章指针
概述:
C程序设计中使用指针可以:
使程序简洁、紧凑、高效
有效地表示复
2、杂的数据结构
动态分配内存
得到多于一个的函数返回值
7.1 指针的概念
l 变量与地址
l 指针与指针变量
l 指针:一个变量的地址
l 指针变量:专门存放变量地址的变量叫~
l &与*运算符
l 含义
l 两者关系:互为逆运算
l 理解
单目运算符
优先级: 2
结合性:自右向左
i_pointer-----指针变量,它的内容是地址量
*i_pointer----指针的目标变量,它的内容是数据
&i_pointer---指针变量占用内存的地址
« 直接访问与间接访问
v 直接访问:按变量地址存取变量值
v 间接访问:通过存放变量地址的变量去访问变量
3、
7.1指针变量
指针变量与其所指向的变量之间的关系
指针变量的定义
一般形式: [存储类型] 数据类型 *指针名;
第2页
注意:
1、int *p1, *p2; 与 int *p1, p2;
2、指针变量名是p1,p2 ,不是*p1,*p2
3、指针变量只能指向定义时所规定类型的变量
4、指针变量定义后,变量值不确定,应用前必须先赋值
« 指针变量的初始化
一般形式:[存储类型] 数据类型 *指针名=初始地址值;
例 int i;
int
4、 *p=&i;
例 int i;
int *p=&i;
int *q=p;
l 指针变量必须先赋值,再使用
n 零指针与空类型指针
u 零指针:(空指针)
l 定义:指针变量值为零
l 表示: int * p=0;
#define NULL 0
int *p=NULL:
p=NULL与未对p赋值不同
用途:
避免指针变量的非法引用
在程序中常作为状态比较
void *类型指针
表示: void *p;
使用时要进行强制类型转换
例 指针的概念
main()
{
5、int a;
int *pa=&a;
a=10;
printf("a:%d\n",a);
printf("*pa:%d\n",*pa);
printf("&a:%x(hex)\n",&a);
printf("pa:%x(hex)\n",pa);
printf("&pa:%x(hex)\n",&pa);
}
运行结果:
a:10
*pa:10
&a:f86(hex)
pa:f86(hex)
&pa:f88(hex)
第3页
指针变量作为函数参数——地址传递
特点:共享内存,“双向”传递
例 将数从大到
6、小输出
swap(int x,int y)
{ int temp;
temp=x;
x=y;
y=temp;
}
main()
{ int a,b;
scanf("%d,%d",&a,&b);
if(a
7、r_2;
scanf("%d,%d",&a,&b);
pointer_1=&a; pointer_2=&b;
if(a