2008年第 7期 福 建 电 脑 213
C语言中的指针常量
卓明敏
(赣南教育学院计算机系 江西赣州 341000)
【摘 要】:在C语言中引入指针常量的概念,将指针常量与指针变量统称为指针。字符串常量和字符串变量都是指针
常量。在C语言教学中引入破损数组的概念,区别字符型破损数组与字符型二维数组。这样,指针的概念变得异常清晰。
【关键词】:指针常量;指针变量;字符串常量;破损数组
C语言是计算机基础课程之一.在计算机学科中的占有重 什么是字符串常量?用双引号引起来的一系列字符叫字符
要地位。C语言中的指针在C语言编程过程中使用极为广泛,对 串常量.或叫串~(string litera1)。编译器将字符串常量收集为一
指针的理解直接影响编程技能的发挥。指针是C语言教学的一 个单独的标记 ken),并当作字符型数组存储闭。
个难点.尽管教学过程中着重讲解。但教学效果往往还是不理 字符串常量是字符型指针常量。例如。
想.在一定程度上降低学生学习兴趣,甚至打击学生学习C语言 p~tf(”%c”,”abc” ;
的信心。在十多年的C语言教学过程中发现。C语言中的指针之 中的”abc”就是字符型指针常量。它的值就是其中字符 ,a 的地
所以难教又难学.是因为对指针没有形成清晰的概念,而指针概 址,相当于数组名,”abc’。加上下标’l【2]”后就是其第3个字符,c
念含混不清的根本原因又在于没有引入指针常量。 的地址。所以.这一行代码的输出结果是字符c。这一行代码与
p~tf(”%c”, (”abe”+2);
1、指针常量 等价。指针常量”abe”加上2后为指向其第3个字符,c 的指针
1,l什么是指针常量 常量。因此。这行代码的输出结果也是字母c。
变量的地址就是指针常量(Pointer constant)。程序运行过程 作为指针常量的字符串常量有不可变性。尽管我们可以输
中,变量的地址是不会发生变化的,是常量。比如,用 出字符串常量的部分或全部内容.但因为字符串常量是指针常
int x: 量.在不借助其它变量的情况下。无法只通过字符串本身来修改
定义变量x.地址&x就是一个常量,即指针常量。 其内容。例如,只通过”abe“就无法修改其三个字母中的任何一
数组名都是指针常量。例如.用 个.除非借助其它指针变量。
float a[1O0]; 但要注意.用于初始化字符串数组的字符串不是字符串常
定义数组a,数组名a的值就等于&afO1,实际上也是一个变量的 量.也就不是指针常量。例如。因为
地址.是指针常量。如果再用 char sI~oo]=”ABC’。:
double v[1O111oo]; 等价于
定义一个二维数组,v的值等于&v『o],依然是指针常量。推而广 char s口={,A ,,B,,,C , ,l:
之,无论是几维数组,数组名都是指针常量,它的值就是其第一 所以.其中的”ABC”不是字符串常量,而是字符型数组s的
维第O个元素的地址。 初值的简写形式。
教材【I】中说。”一个变量的地址称为该变量的 指针 。”其中 1.3字符串变量也是指针常量
的”指针”实际上是指针常量 字符串变量实际上是字符型数组名。因为.数组名都是指针
那么。什么是指针变量?教材『l】中说。”存放变量地址的变量 常量。所以,字符串变量是指针常