资源描述:
《c语言中指针的教学》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言中指针的教学第5卷第2期2006年6月南通航运职业技术学院JouRN^I.OFNANTONGVOCATIONAL&TEC}玎CALSH嗍NGCOUGEV0I.5No.2Jun.2006C语言中指针的教学薛向红(南通航运职业技术学院信息技术系,江苏南通226006)摘要:指针是C语言中重要的数据类型,也是C语言的一个重要特色.文章主要论述了C语言中指针的概念,指针的运算,指针的应用及指针的教学,通过例子阐述了利用指针编程的优势以及使用指针时可能出现的问题.关键词:C语言;数据类型;变量;存储地址;指针类型;指针的教学中图分类号:TP312C文献标识码:
2、A文章编号:1671—9891(2006)02-0100-05在C语言中,指针类型用于描述存储单元的"地址",是C语言的教学中不可忽略的内容.同时,指针的概念也不易理解,学习和应用时有一定的困难,本文将结合例题对此进行探讨.1指针的概念在C语言教学中,首先要让学生弄清变量所具有的两方面的数据特征:值与地址.如果在程序中定义了一个变量,在编译时就会给这个变量分配一定字节数的内存空间.内存区的每一个内存单元都有一个地址,用来标识内存单元,程序的编译系统通过地址对其所标识的单元存放数据.给变量分配内存空间,实际上就是建立变量名和地址的对应关系,变量的值则是存放在该地址所
3、标识的内存单元中的数据.例如,若定义了一个整型变量i,则在内存中将会分配两个字节的存储单元给i.假设分配给i的地址为2000H,2001H,执行scanf("%d",&i)时,将i的值送入地址为2000H,2001H的存储单元中;而执行printf("%d",i)时,根据变量名与地址的对应关系,找到变量i的地址2000H,从中读取i的值输出.这种按变量地址存取变量值的方式称为"直接访问"方式.另一种是"间接访问"方式.例如,将变量i的值存放在一个内存单元内(如2000H,2001H),而变量i的地址(200OH)存放到另一个变量P中,要读取i的值,首先找到
4、P的地址,读取P的值(i的地址200OH),通过P的值再找到i的值.上述例子中,变量i中存放的是一个整型数据,而变量P中存放的是变量i的地址.在C语言中,很形象地用指针这个词来表示变量的地址:即指针是变量地址的同义词,而存放地址的变量称为指针变量.教学中可利用图形讲解,如图1:P(2020H):i(2000H):-.__一臣卜_-回图1指针示意图要正确有效地使用指针编程,首先必须要弄清指针变量与指针指向变量的区别:指针变量存放的是所指向变量的地址(如上图中的P),而指针变量所指向的变量存放的则是数据(如上图中的i).2指针类型的声明及解读指针是C语言的一种数据类型
5、,与一般变量的定义完全相同,标识符即为指针变量名.指针的数据类型与指针本身并没有关系,仅表示它所指向的数据类型.在指针教学过程中,学生一般对指针声明的解读也不太容易掌握,可以对指针声明的解读总结出一个一收稿日期:20o5一l2—05作者简介:薛向红(1957一),女,江苏如东人,南通航运职业技术学院信息技术系实验师.第2期薛向红:C语言中指针的教学101般规律:可按?,【】,O优先级序由低到高及说明运算符规则决定结果.例如:int*P0决定P为函数,返回一个指针,指向整型数据;intp[n]决定P为数组,每个元素为指向整型数据的指针,hat【N]决定P为指针,指向
6、整型数组.下面列举几种常见的指针类型声明格式及含义:.mt?P;/.P为指向整型数据的指针变量/int*piN];/.定义了指针数组P,它包含N个元素,每个元素指向一个整型数据,即每个元素又都是一个指针/int*p0;/.定义了P为指针函数,返回值为指向整型数据的指针/int(?P)O;/.P为指向整型函数的指针,它可以存放一个整型函数的入口地址/int(?P)[;/*P为指向含有N个元素的一维数组的指针变量/int..P;/.P为指向指针的指针/int(??P)[n】;/.P是一个指向另一个指针变量的指针变量,被指向的指针变量指向一个含n个整型数据的一维数组/i
7、nt?P0tn】;/.P为返回整型指针数组(首地址)的函数/int(?P【】)O;/.P为指向返回整型值函数的指针数组/3指针的运算在使用指针变量之前,必须对其赋值,这是在指针教学中必须要强调的一点.例如:intP,ij,i=l;p=&i;j=p;可用图2说明:P:i:J:巨至}一_—口[图2指针赋值示意图这里P为一个指向整型数据的指针变量,P里存放了变量i的地址,变量j得到的是i的值.如果将上述语句改为:intP,i,j;i=1;j=p;则由于P没有指向具体的单元,因此j将得到一个随机数.两个指针变量之间也可以相互赋值,若P和q是指向同类型数据的指针变量
8、,则执行p