C 语言指针应用
摘
要:
“指针”是 C 语言的精髓,是 C 语言区独有的功能,在 C 语言的程序设计过程中
起着不可或缺的作用。只有学好了指针才算掌握了
C 语言,同时指针也是 C 语言最危险的
特性,如果使用不当,则很容易指到意想不到的地方,产生错误很难发现。应该特别注意指
针教学,高效应用指针,发挥
C 语言的优势。
关键词:
C 语言 指针 函数 数组
“指针”是 C 语言中广泛使用的一种数据类型,运用指针编程是 C 语言最主要的风格之
一。利用指针可以表示各种数据结构,它与函数、数组的使用和传递数据有密切联系,能方
便地访问数组,还能像汇编语言一样处理内存地址,从而编出精致而高效的程序。指针极大
地强化了
C 语言的功能。学习指针是学习 C 语言最重要的一环,能否正确理解和使用指针
是判断是否掌握了
C 语言的重要标志。但是指针也是 C 语言最危险的特性,如果使用不当,
则很容易指到意想不到的地方,产生错误也很难发现。因此,对于初学者来说,应特别注意
指针的应用。怎样才能应用好指针呢?下面笔者以在计算机
C 语言教学中的体会与大家进
行探讨。
一、理解指针
在
C 语言中任何数据只要定义了,在内存中就是有一定的存储单元的。存储单元就是
变量在计算机中的存储地址,指针就是用来表示这些地址的变量。所以简单地说,指针就是
地址,变量的指针就是变量的地址,这里还涉及一个概念就是指针变量,所谓指针变量就
是用来存放指针(地址)的变量。例如:
int a;假设 a 的地址是 2000,而 2000 又存储在变
量
point 中,那么变量 point 就是指针的变量简称指针变量,a 就是指针变量所指向的变量。
很多初学者都存在这样的误区:既然指针放的是地址,而
2000 正好是变量 a 的地址,那么
对于指针
point 就可以这样赋值:point=2000,这是错误的,这里的 2000 表示的不是地址是
一个整型数据。所以对于指针变量的赋值只能用取地址运算符
“&”进行赋值即:point=&a;
&a 即为 a 的地址。
二、指针与函数
指针作为
C 语言的精华有很多用途,除具有一般的功能外,其中具体特殊功能的应用
总结起来有三个方面:一是用于在函数中可以返回多个值;二是可以实现动态调用函数;
三是实现数组的动态定义。其中,普通变量作为函数的参数,传递的是变量的值,因此只能
带回一个返回值,但在有些场合需要返回多个值,这就必须用到指针做函数的参数,因为
指针作为参数传递的是地址,让实参和形参指向同一个变量的地址,
N 个形参所指向的变
量的值改变了,
N 个实参的值也自然改变了,从而实现了带回多个返回值。这里举个例子,
编写一个函数实现两个数从小到大输出。这个程序需要子函数实现两个数的交换,把交换后
的两个值通过指针传回主函数输出,传回来的是两个值。所以普通变量做函数的参数是无法
实现的,只能用指针作为函数的参数。具体实现:
子函数实现交换:
swap(p1,p2)
int *p1,*p2;
{int p;
p=*p1;
*p1=*p2;
*p2=p;
}
主程序实现调用,输出: