浅谈C语言中指针的教学
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
摘要:C语言数据类型非常丰富,其中一个重要的数据类型是指针,利用指针可以直接实现对内存的数据进行快速处理、实现函数间的调用等。但是由于指针概念较为复杂,使用起来非常灵活,所以对于大一的新生初次学习程序语言设计,在学习到指针这一数据类型的时候往往难以掌握。因此在教学中,教师需要根据学生的实际情况合理的安排这一知识点的学习,一般可以按照数据在内存中的存储方式合理地进行教学设计,帮助学生理解指针的概念,从而熟练掌握指针的使用。
关键词:指针;内存;程序
一、指针的概念
首先要让学生明确指针也是一种数据类型。为了让学生很好的理解指针到底是一种什么样的数据类型,就必须让学生理解数据在内存中是如何存储的。内存是以字节为单位的一片连续的存储空间,每一个字节单元都对应着一个唯一的存储单元的编号,这个存储单元的编号就称为内存单元的地址,简称地址。可以举例学生宿舍,内存单元的地址就相当于我们学生所在宿舍的房间号,在内存地址所标识的内存单元中所存放的数据,就相当于学生宿舍里入住的学生一样,可以有单人间,双人间,四人间等等。即根据数据类型的不一样,分配不同的存储空间。如下定义:char n; float d;int m ; 变量的类型不一样,内存为各自分配存储空间也不一样。由于变量n是字符型数据,所以内存分配其1个字节的存储单元;变量d是浮点型数据,所以内存分配其4个字节的存储单元;变量m是整型数据,所以内存分配其2个字节的存储单元。所谓变量的地址就是内存为各变量所分配的存储空间的第一个字节单元的地址。即地址就是用来标识数据的存储单元的一种数据类型,方便用户对存储在各自单元中的数据进行正确的访问,在C语言中就将地址称为指针。指针可以用来指向变量、结构体\\数组及其元素以及指针等。
二、区分变量、变量名、变量的地址和变量值
为了更好的理解指针这种类型的数据,我们先来理解一下变量、变量名、变量的地址和变量值的区别。所谓的变量即命名的内存空间。变量在内存中占有一定空间,用于存放各种相应类型的数据;所谓的变量名即给内存空间所取的一个容易记忆的名字;所谓的变量的地址即变量所使用的内存空间的地址(内存单元的.编号);所谓的变量值即所对应的内存单元中存放的数值。
三、指针变量的定义、赋值和引用
(一)指针变量的定义格式:基类型 *变量名;
例如: int *n; /*定义一个指向整数据的指针变量n*/
char *m; /*定义一个指向字符型数据的指针变量m*/
float *p; /*定义一个指向浮点型数据的指针变量p*/
注意:C语言所有的变量必须是先定义然后再使用。指针变量也必须如此,为了表示指针变量是存放地址的一种特殊变量,所以在定义变量时会在变量名前加“*”号;指针变量的基类型表示指针变量所指向数据的类型,因各数据类型占用的存储空间不一样,指针变量的某些操作具有特殊的含义。如指针变量加1,不是纯粹的加1个字节, 而是加一个所指向变量的字节个数,例如:int *p, b=100; p=&b;其中执行p++;指的是p值加2个字节。
(二)指针变量的赋值方法
(1)变量的地址赋值给指针变量,例如:int a, *p;p=&a;
(2)相同类型的指针变量之间赋值,例如:int a, *p1,*p2;p1=&a;p2=p1;
(3)赋空值NULL,例如:int *p1 =NULL;
(三)指针变量的具体使用
首先区分“&”运算符和“*”运算符。“&”运算符表示取变量的地址, “*”运算符表示访问指针变量所指向的变量的值。在定义指针变量时”*”是指针变量的标志,没有特殊含义,但在具体使用中要注意,在指针变量前加了”*”, 表示取其所指向变量的值。从变量名获得变量地址用“&”运算符,从地址获得地址指向的数据用“*”运算符。
例如:int a=3,*p=&a;
具体访问数据时,可以按变量名直接访问,如:a=3;而利用指向变量的的指针去访问属于间接访问,即变量a的地址(指针)存放在指针变量p中,p=&a(p指向a),然后利用指针变量p进行变量a的访问*p=3,这就是间接访问。
四、指针变量可以作为函数的参数
指针变量和其它数据类型的变量一样也作为函数参数,区别只是传递的内容是一个地址值。而且可以通过这个地址值间接改变实参、形参所共同指向的变量的值。
例如:输入a,b,交换a,b数据后输出。
void fun(int *p1, int *p2)
{int temp;
temp=*p1;
*p1=*p2 ;
*p2=temp;}
main()
{int a=3,b=5,*pa, *pb;
pa=&a;
pb=&b;
fun(pa,pb);
printf(“swaped:\n”);
printf(“a=%d,b=%d\n”,a,b);}
五、总结
本文主要介绍了指针的基本概念及其使用。由于指针这种数据类型比较灵活,所以学生刚开始使用时容易出错,可以通过指导学生上机调试程序,弄清程序中的细节,区分指针与其它数据类型的区别,累积编程得经验,以达到熟练的使用它。
参考文献:
[1]董汉丽.C语言程序设计[M].大连:大连理工出版社,2002.
【浅谈C语言中指针的教学】相关文章:
7.C语言程序的结构
8.C语言编程练习
9.C语言编程题