C语言中的指针浅谈

时间:2022-09-05 07:57:26

C语言中的指针浅谈

摘要:C语言是一门基础的程序设计语言,在程序设计教学中占有重要的地位。在C语言中,较难理解的就是指针。本文试图通过论述指针的定义、分类、运算以及3殊的用途,让大家能较清晰的认识指针的本质。可以预见的是只有深入的掌握的了指针才能真正的掌握了C语言。通过深入的应用指针,C语言必定能够应用于更广泛领域。

关键词:C语言;指针;程序设计

中图分类号:TP311.1 文献标识码:A文章编号:1007-9599 (2010) 05-0000-01

C Language Pointer

Li Peng

(Tianjin Polytechnic University,Tianjin300160,China)

Abstract:C-language is a programming language,teaching in the program design plays an important role.In the C language,difficult to understand is the pointer.This article intends to discuss the indicators of definitions,classifications,operations and 3 special purpose,so that we can more clearly understand the nature pointer.Can be expected that only a thorough grasp of the pointer can truly grasp of the C language. Applications through in-depth pointers,C language will be used more widely in the field.

Keywords:C language;Pointer;Programming

一、引言

C语言是目前教学中使用最广的程序设计语言。虽然近年来产生了许多功能丰富的计算机程序设计语言,但鲜有能代替C语言的。其主要原因就是它不仅是一门高级语言更重要的是它能直接对物理地址进行访问,具有双重功能,是嵌入式设计中必不可少的一门语言。C语言功能强大的主要原因就是具有指针结构。指针是一种特殊的数据类型,直接指向目标的存储地址,实现直接访问对象存储空间的功能,具有重要的作用。

二、C语言中的指针简介

在C语言中,任何一个变量总结起来包括变量的数据类型、存储空间。在数据类型中定义的变量的基本范围和操作类型。存储空间就是变量在计算机中的存储地址,如何有效的存储变量并能有效的访问到它这是一个必须解决的问题。指针就是表示地址的一种变量,所以指针的范围严格来说只能是自然数的,并且不能在两个指针间进行加、乘、除这样的运算。由于在C语言中每个数据类型都必有存储空间,所以指针可以应用于几乎所有的数据类型中。所以,从这个角度出发可以将指针分为:指向变量的指针、数组指针、字符指针、指向指针的指针、函数指针、结构变量的指针以及文件指针等等。其中,指向变量的指针就是存储变量的地址的。如 int * s这就是一个指向整型的指针,可以用于指向一个整型变量。如int a; 当p=&a时,就是将p存储整型变量a的地址。这是指针最简单的一种类型。所谓数组指针,就是指数组的名称实际上是指向整个数组空间的首指针。如 int a[10];其中a本质上是一个指针,指向该数组的第一个位置,a[2]表示距离a指向空间向后2个位置所在空间中的存放的值。所以,a[2]=*(a+2)。字符指针本质上是数组指针的一种特殊情况,就是存放字符串的数组所对应的数组名。指向指针的指针这是一类很特殊的指针,用于存放指针的一类指针,在本质上与指向变量的指针十分相似。例如 char *ss[N]={“java”,”sss”,’’rrr”}。指向函数的指针就是指向函数入口地址的指针。结构变量的指针这类指针和指向变量的指针很类似,主要的区别在于结构变量可能有多个类型不同的变量,所以一般空间较大。文件指针就是对文件进行操作的指针。从上述的分类可以看出无论什么类型的指针其功能都是一样的就是用于指向对象的地址空间罢了。

上面简要的介绍了指针的定义和分类,现在简要的论述一下指针涉及到的运算操作。首先由于指针是存放的变量地址的,所以第一个操作就是对指针进行地址赋值。如int a,*p;

P=&a,这就是对指针p进行进行赋变量a的地址,p指向变量a。当然也可以通过指针获取指针指向地址空间所存储的值。如int b=2,*p;p=&a,这是*p就表示p指向空间所存储的值,在本例中就是a的值2。为了能在数组指针中通过指针能访问到整个数组的值,所以。可以对指针进行加减整数值,表示地址的前移或后移。如int a[10],*p,*s; p=a;s=p+2;其中s 的值表示数组中首地址向前移动2的位置,表示 a[2]对应的地址。 为了表示两个地址间存在的距离,可以通过指针间的减法实现。当然指针涉及到的还有其他运算,现不详述了。

三、C语言中的指针应用

在C语言中指针的十分应用广泛,除具有一般的功能外,具体特殊功能的应用总结起来有三个方面:一是用于在函数中可以返回多个值;还有就是可以实现动态调用函数;最后就是实现数组的动态定义。其中,由于由函数的特点,一个函数只能有一个返回值,但在有些场合需要返回多个值,就可以定义指针参量来实现,其定义的基本框架如下:

Sss( int a,int *p )

{int s;

…….

………

Return s;

}

在这中情况下,函数不仅可以得到返回值(通过Return s来实现的),还可以通过指针p来返回相应的值。所谓指针能实现动态调用函数,这里用到的指针就是上文中提到的函数指针。函数指针就是指向函数入口地址的指针,我们还知道其实函数名就是一个函数指针。我们就是通过函数名实现动态调用函数的。在主调函数的参数中采用函数名充当实参就能实现函数的动态调用。该方法以简短的代码实现了复杂的功能。最后讲到指针能实现数组的动态定义。从C语言的学习中,我们知道在定义数组时一定要指定数组的大小,否则,不能完整数组的定义。那么如何实现数组的动态定义?数组从本质上来讲就是连续的空间集合罢了。那么,我们可以通过申请一个空间并赋值给一个指针变量,以此指针变量为首空间,就能获取连续的空间,这与数组相同。当然数组还有许多应用,只有认真分析就能得到更多更好的应用实例。

四、结论

C语言是到目前为止学习最多的程序设计语言之一,也是计算机教育中的必修课。在整个C语言教学中,指针是一个十分重要的部分,也是最难掌握的部分之一。论文通过对指针的概念、分类、运算类型和应用等方面,系统的论述了指针,目的就是让大家能清晰的了解指针、掌握指针,从而实现高效的应用指针。只有掌握好了指针,才能发挥C语言的优势,可见指针具有重要的作用。

参考文献:

[1]张丽霞.C 语言指针详解[J].赤峰学院学报(自然科学版);2005;21(5);37-38

[2]杨井荣,赵春雨.C语言指针综述[J].电脑编程技巧与维护

上一篇:数据库查询优化规划 下一篇:浅谈企业改革中ERP人力资源数据管理方法