很多人觉得C语言难,指针更难,小编并不觉得啊,这就像上图说的纸老虎,其实学完后你也会觉得就那么回事,只是当时怕犯错,很多时候学习就是从一步步错误中走过来的。
指针的发明
在1964年,哈罗德·劳森发明了最早的指针。他在PL/I中实现出了这个概念,其他高级编程语言也很快跟进,使用了这个想法。指针这个名称首次出现在系统发展公司的技术文件,当中使用了堆栈指针这个名词。
认识指针
维基百科:
在计算机科学中,指针是编程语言中的一类数据类型及其对象或变量,用来表示或存储一个存储器地址,这个地址的值直接指向存在该地址的对象的值。
指针参考了存储器中一个地址。通过被称为指针反参考的动作,可以取出在那个地址中存储的值。保存在指针指向的地址中的值,可能代表另一个变量、结构、对象或函数。但是从指针值是无法得知它所引用的存储器中存储了什么数据类型的信息。
在低级语言如汇编语言中,指针有效的取代了在低级语言直接使用内存地址。但它可能只适用于合法地址之中。因为指针更贴近硬件,编译器能够很容易的将指针翻译为机器代码,这使指针操作时的负担较少,因此能够提高程序的运作速度。
指针含义:
指针有两种含义,第一种是作为数据类型,第二种是作为实体。前者如字符指针、浮点指针等等;后者如指针对象、指针变量等。
举例
下面通过指针交换变量来简单说明一下地址的作用。
源代码:
#include<stdio.h>
void exchange(int *a,int *b);//用函数来实现值的交换
int main() {
int x,y;
scanf("%d%d",&x, &y);//输入待交换的值
exchange(&x,&y);
printf("%d %d",x,y);//输出交换后的值
return 0;
}
void exchange(int *a,int *b){//在函数内部通过地址来交换变量的值
int n;
n=*a;
*a=*b;
*b=n;
}
运行结果: