欢迎来到天天文库
浏览记录
ID:30546248
大小:105.50 KB
页数:5页
时间:2018-12-31
《C语言指针应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、C语言指针应用 摘要:“指针”是C语言的精髓,是C语言区独有的功能,在C语言的程序设计过程中起着不可或缺的作用。只有学好了指针才算掌握了C语言,同时指针也是C语言最危险的特性,如果使用不当,则很容易指到意想不到的地方,产生错误很难发现。应该特别注意指针教学,高效应用指针,发挥C语言的优势。 关键词:C语言指针函数数组 “指针”是C语言中广泛使用的一种数据类型,运用指针编程是C语言最主要的风格之一。利用指针可以表示各种数据结构,它与函数、数组的使用和传递数据有密切联系,能方便地访问数组,还能像汇编语言一样处理内存地址,从而编出精致而高效的程序。指针极大地
2、强化了C语言的功能。学习指针是学习C语言最重要的一环,能否正确理解和使用指针是判断是否掌握了C语言的重要标志。但是指针也是C语言最危险的特性,如果使用不当,则很容易指到意想不到的地方,产生错误也很难发现。因此,对于初学者来说,应特别注意指针的应用。怎样才能应用好指针呢?下面笔者以在计算机C语言教学中的体会与大家进行探讨。 一、理解指针5 在C语言中任何数据只要定义了,在内存中就是有一定的存储单元的。存储单元就是变量在计算机中的存储地址,指针就是用来表示这些地址的变量。所以简单地说,指针就是地址,变量的指针就是变量的地址,这里还涉及一个概念就是指针变量,所
3、谓指针变量就是用来存放指针(地址)的变量。例如:inta;假设a的地址是2000,而2000又存储在变量point中,那么变量point就是指针的变量简称指针变量,a就是指针变量所指向的变量。很多初学者都存在这样的误区:既然指针放的是地址,而2000正好是变量a的地址,那么对于指针point就可以这样赋值:point=2000,这是错误的,这里的2000表示的不是地址是一个整型数据。所以对于指针变量的赋值只能用取地址运算符“&”进行赋值即:point=&a;&a即为a的地址。 二、指针与函数 指针作为C语言的精华有很多用途,除具有一般的功能外,其中具体特
4、殊功能的应用总结起来有三个方面:一是用于在函数中可以返回多个值;二是可以实现动态调用函数;三是实现数组的动态定义。其中,普通变量作为函数的参数,传递的是变量的值,因此只能带回一个返回值,但在有些场合需要返回多个值,这就必须用到指针做函数的参数,因为指针作为参数传递的是地址,让实参和形参指向同一个变量的地址,N个形参所指向的变量的值改变了,N个实参的值也自然改变了,从而实现了带回多个返回值。这里举个例子,编写一个函数实现两个数从小到大输出。这个程序需要子函数实现两个数的交换,把交换后的两个值通过指针传回主函数输出,传回来的是两个值。所以普通变量做函数的参数是无
5、法实现的,只能用指针作为函数的参数。具体实现: 子函数实现交换: swap(p1,p2)5 int*p1,*p2; {intp; p=*p1; *p1=*p2; *p2=p; } 主程序实现调用,输出: main() {inta,b; int*pointer_1,*pointer_2; scanf(“%d,%d”,&a,&b); point_1=&a; point_2=&b; if(a
6、值可以通过以下三步实现:(1)主调函数中设N个变量,用N个指针指向他们;(2)将指针变量作实参,将N个变量的地址传给形参;(3)通过形参指针变量指向的改变,改变N个变量的值。最后主调函数中就可以得到N个变量的返回值。 三、指针与数组5 前面提到任何数据都有存储单元,都有指针。所以,从这个角度出发可以将指针分为:指向变量的指针、数组指针、字符指针、指向指针的指针、函数指针、结构变量的指针及文件指针,等等。其中,指向变量的指针就是存储变量的地址的,这是指针最简单的一种类型。那么一个变量有地址,一个数组有若干个元素,每个元素都有一个地址,所谓数组的指针,就是指
7、数组的名称,实际上是指向整个数组空间的起始地址。数组元素的指针是数组元素的地址。例如:inta[10];int*p;这里的数组名a就是数组的首地址,本质上是一个指针。a[2]表示距离a指向空间向后2个位置所在空间中的存放的值,所以a[2]=*(a+2)。那么如果让p=a,p就是指向数组的指针,对于a我们可以做加减整数运算,利用它表示数组中任何数据的值。那么对于指针也可以通过加减整数运算来表示数组中的任何数据。指针变量加上或减区一个整数n表示把指针指向的当前位置向前或向后移动n个位置。具体移动的字节数和指针数组的类型在内存所占的字节数有关系,如果指针数组类型为
8、整型,在内存中占2个字节,那么,指针p+1,实际上的
此文档下载收益归作者所有