C语言—指针计算方式

时间:2022-04-15 08:45:00

C语言—指针计算方式

1C语言是目前世界上使用最为广泛的计算机语言之一,目前已经成为各大高校主要的计算机教学语言。指针算法是C语言中的一个非常重要的概念,由于指针算法概念比较复杂,运用非常灵活,比较难掌握,尤其是对初次涉及计算机语言的学生来说更是如此。本文重点分析C语言指针算法单元教学中的几个关键点,并探讨C语言教学中应该注意的一些问题。指针算法知识单元构成

1.1指针算法定义在计算机内存中,每一个存储单元(通常为1字节)都有一个固定的编号,就像酒店中的房间号码一样,这个编号就称为地址,相当于房间号。在地址所标识的内存单元中存放数据,这就相当于酒店中各个房间里居住的旅客一样。

1.2引用指针算法变量&和*是C语言有关指针算法的两个重要运算符,分别是取地址运算符和指针算法运算符。例如:&x为变量x的地址,*p为指针算法变量p所指向的存储单元。应该注意的是在定义时*只起说明作用,不是运算符。比如下面的语句中:floatx=1.5float*P=&xfloat*P=x很多同学在这里有些迷惑,到底是第2条语句正确还是第3条语句正确呢?根据指针算法的定义很显然第2条语句是正确的。迷惑的原因就在把*当成了运算符。其实,这里的float*共同来修饰P,定义一个指向浮点型的指针算法变量,同时要将一个指针算法&x赋值给P。为了方便对存储单元进行控制,我们可以设置某些变量专门存放指针算法,这样的变量称为指针算法变量。在课堂教学中,应注意使学生明白内存单元地址与内存单元内容这两个概念的区别,很多初学者在这个概念问题上常常弄混淆。

1.3指针算法与数组

1.3.1指针算法与数组区别。在C语言中数组与指针算法的关系非常密切,但它们还是有着本质上的区别。指针算法可以随时指向任意类型的内存单元,它的特征是可变。所以我们常用指针算法来操作动态内存。当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针算法。例如:charx[]=chinachar*p=china上述两个变量的内存布局情况是:数组x需要在内存中占用6个字节的空间。这段内存区通过数组名x来标志。指针算法P则需要4个字节的空间来存放地址,这4个字节用P来标志。其中存放的地址几乎可以指向任何地方,也可以哪里都不指。目前这个P指向某地连续的6个字节即字符串china。在教学过程中应该注意使学生能够正确认识数组与指针算法的区别,并正确运用它们。

1.3.2数组指针算法。数组指针算法的实质是指针算法,其定义为:int(*p)[n]表示P为指向由n个元素组成的一维数组的指针算法变量。假设对于一个二维数组a[2][3],定义一个指向它的数组指针算法P,程序如下:inta[2][3]={{l,2,3},{4,5,6}}int(*p)[3]P=aprintf(%d,(*p)[1])p++printf(%d,(*p)[1])在该程序中,初始化数组指针算法P指向数组a的首地址,即指向二维数组的首行,此时,输出这一行的第1个元素,即(*p)[1]=2接着,P往下移动一个数组的宽度,即指向二维数组的第二行,输出这一行的第1个元素,即(*p)[1]=5。