C语言程序设计
1 指针
——变量的地址和指针变量
1:通过本节课的学习,使学生了解变量的地址的概念,了解指针及指针变量的含义,会用指针解决简单问题。
1.1教学目的:1、了解变量的地址的概念
2、了解指针及指针变量的含义
3、会用指针解决简单问题
1.2教学内容: 1、地址
2、指针变量
3、指针变量作为函数的参数
1.3教学重点:1、地址的含义
2、指针变量的含义
1.4教学方法:讲授法、演示 1. 5学习方法:听课、笔记、练习
2:引入本课内容: [5分钟]
在迄今为止的学习中,对数据的访问都是通过变量名来实现的(举例),今天将学习
一种新的数据访问方式,这就是指针,在学习指针之前,必须先要了解地址的概念。
3:课程知识点讲解:
具体知识点1:地址 [10分钟]
1、内存单元:在计算机中,所有的数据都是存放在存储器中的,一般把存储器中的
一个字节称为一个内存单元。
2、不同的数据类型所占用的内存单元数不等。(举例:int(2),float(4),char(1)) 3、为了正确地访问这些内存单元,必须为每个内存编号,内存单元的编号就是地址。
- -
1
C语言程序设计
具体知识点2:指针和指针变量[25分钟]
知识点讲解1、C语言中,允许用一类变量专门来存放另一变量的地址,这种变量称为指针变量。
2、一个指针是一个地址,是一个常量;指针变量可以被赋予不同的指针
值,是变量。(举例)
3、定义指针变量的目的是为了通过指针(地址)去访问内存单元。 4、指针变量的定义和引用
①指针变量定义的一般形式:
类型标识符 *指针变量名 ②对指针变量的引用: *指针变量名
案例讲解1:判断以下程序的运行结果: #include
int a;
int *pointer_1; a=100;
pointer_1=&a;
printf(“%d”,a);
printf(“%d\\n”,*pointer_1); }
案例讲解2:判断以下程序的运行结果: #include
int i,j,*p; p=&i; *p=100;
printf(“%d%d\\n”,i,*p); p=&j;
scanf(“%d”,p);
printf(“%d%d\\n”,j,*p); }
具体知识点3:直接访问和间接访问【5分钟】
知识点讲解1、直接引用:通过变量名访问;(举例)
2、间接引用:通过指针变量间接访问一个变量(举例) 老师提问:
问题1:观察之前案例哪些属于直接访问,哪些属于间接访问?
- -
2
C语言程序设计
具体知识点4:指针变量作为函数的参数【35分钟】
知识点讲解:指针变量同其他类型的变量一样,可以作为函数的参数进行传递,通过以下几个案例体会指针变量作为函数参数的用法。
案例讲解1:输入a和b两个整数,按先大后小的顺序输出a和b。 int swap(int *p1,int *p2) { int p;
p=*p1; *p1=*p2; *p2=p; }
main() {
int a,b;
int *pointer_1,*pointer_2; scanf(“%d,%d”,&a,&b); pointer_1=&a; pointer_2=&b; if(a
swap(pointer_1,pointer_2); printf(“\\n%d%d\\n”,a,b);
}
案例讲解2:输入a和b两个整数,按先大后小的顺序输出a和b。 int swap(int *p1,int *p2) { int *p;
p=p1; p1=p2; p2=p; }
main() {
int a,b;
int *pointer_1,*pointer_2; scanf(“%d,%d”,&a,&b); pointer_1=&a; pointer_2=&b; if(a
swap(pointer_1,pointer_2);
printf(“\\n%d%d\\n”,*pointer_1,*pointer_2);
}
老师提问:
问题1:观察两个案例,为什么第二个案例不能达到交换的目的?
- -
3
C语言程序设计
知识点讲解:按值传送和按地址传送
1、按值传送:传递的参数是具体的数值,形参的改变不会影响实参。 2、按地址传送:传递的参数是具体数值的地址,形参的改变会影响实参。 3、
4 本节总结 [10分钟]
(1)在计算机中,所有的数据都是存放在存储器中的,一般把存储器中的一个字节
称为一个内存单元。不同的数据类型所占用的内存单元数不等。为了正确地访问这些内存单元,必须为每个内存编号,内存单元的编号就是地址。
(2) C语言中,允许用一类变量专门来存放另一变量的地址,这种变量称为指针变
量。一个指针是一个地址,是一个常量;指针变量可以被赋予不同的指针值,是变量。定义指针变量的目的是为了通过指针(地址)去访问内存单元。
(3) 通过变量名访问变量的方式叫直接访问,通过指针变量间接访问变量的方式叫
间接访问。
(4) 按值传送时传递的参数是具体的数值,形参的改变不会影响实参。按地址传送
时传递的参数是具体数值的地址,形参的改变会影响实参。
学生问题汇总:
问题1:
刚开始接触指针,尤其是间接访问方式,对习惯了直接访问的学生来说,还有些不适应。
问题2: 按值传送和按地址传送的概念部分学生没有掌握。
作业:
习题1:用指针的方法求输入两数的和。
习题2:有三个整型变量,i,j,k。请编写程序,设置三个指针变量p1,p2,p3,分别指向i,j,
k。然后通过指针变量使i,j,k三个变量的值顺序交换,即原来i的值赋给j,把j的原值赋给k,把k的原值赋给i。i,j,k的原值由键盘输入,要求输出i,j,k的原值和新值。
- - 4