前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈指针

浅谈指针

作者头像
小Bob来啦
发布2020-12-16 14:35:58
4070
发布2020-12-16 14:35:58
举报
文章被收录于专栏:用户8057608的专栏

很多人觉得C语言难,指针更难,小编并不觉得啊,这就像上图说的纸老虎,其实学完后你也会觉得就那么回事,只是当时怕犯错,很多时候学习就是从一步步错误中走过来的。

指针的发明

在1964年,哈罗德·劳森发明了最早的指针。他在PL/I中实现出了这个概念,其他高级编程语言也很快跟进,使用了这个想法。指针这个名称首次出现在系统发展公司的技术文件,当中使用了堆栈指针这个名词。

认识指针

维基百科:

在计算机科学中,指针是编程语言中的一类数据类型及其对象或变量,用来表示或存储一个存储器地址,这个地址的值直接指向存在该地址的对象的值。

指针参考了存储器中一个地址。通过被称为指针反参考的动作,可以取出在那个地址中存储的值。保存在指针指向的地址中的值,可能代表另一个变量、结构、对象或函数。但是从指针值是无法得知它所引用的存储器中存储了什么数据类型的信息。

在低级语言如汇编语言中,指针有效的取代了在低级语言直接使用内存地址。但它可能只适用于合法地址之中。因为指针更贴近硬件,编译器能够很容易的将指针翻译为机器代码,这使指针操作时的负担较少,因此能够提高程序的运作速度。

指针含义:

指针有两种含义,第一种是作为数据类型,第二种是作为实体。前者如字符指针、浮点指针等等;后者如指针对象、指针变量等。

  • 指针作为数据类型,可以从一个函数类型、一个对象类型或者一个不完备类型中导出。从中导出的数据类型称之为被引用类型。指针类型描述了一类的对象,对象值为对被引用类型的实体的引用。

举例

下面通过指针交换变量来简单说明一下地址的作用。

源代码:

代码语言:javascript
复制
#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;
}

运行结果:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员Bob 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档