`
canonical
  • 浏览: 367128 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

从指针到引用

阅读更多
    地址(Address)是现代计算机体系架构中的核心概念,它在程序设计语言上的体现就是C语言中的指针(Pointer)。在C语言中,所有的高级技巧都和指针这个概念相关。指针只是一个存放了一个地址的变量,但是C语言中提供了一个方便的间接访问方式,p->x, 它使得拥有指针在概念上就等价于拥有了指针所指的全部内容。在这种诱导下,我们渐渐模糊了地址和地址所存储的内容之间的区别。这也是指针的指针这样的概念总是让初学者迷惑不解的重要原因。
     指针是对地址的符号化。它所带来的第一大好处是使得我们摆脱了对绝对地址空间的依赖。如同Newton第一定律所阐述的:物理规律与所发生的惯性坐标系无关。同样,数字空间中发生的的事件与所处的绝对地址也是无关的。在符号化的方向上更进一步,如果我们专注于指针的关联语义,而放弃指针的指针这样的混杂概念,就会得到具有独立价值的引用(Reference)概念.
     从表面上看起来,数字空间只是一个无限延展的一维地址空间,每一地址处只能存放一个有限大小的离散数值,似乎它的几何学是贫瘠的。但是因为在软件设计中,一般是不考虑寻址时间的。这意味着在拥有指针的情况下,我们可以“立刻”访问到数字空间的任意遥远的地方。这种超时空的信息传递过程使得我们可以利用“引用”概念轻松的构建一个多维的表示空间。在面向对象的技术背景下,x.y.z这样的形式表示暗示着x,y,z是同时存在的。当z发生变化的时候,通过y.z和x.y的信息传导,x对象本身也发生了某种变化。
        随着web技术的流行,独立的状态/地址空间的存在性逐渐成为系统不可回避的假设, "同时性"的物理约束越来越难以维持. 相对论规定了物理现象的定域性, 在数字空间我们一直忽视了它.但有趣的是, 网络上的传输时延却迫使我们重新发现了"引用"形式下必然存在着的物理过程. 引用本身只是标记了某种信息关联, 并不一定意味着同时性约束. 并发编程领域的所谓的Future对象是对传统引用概念的一种有趣扩展.
     result = obj.callMethod(args) ==>  future = obj.callMethod(args)
future对象可以被自由传递, 只有当实际访问到它的属性的时候, 才会触发时序约束. 
分享到:
评论
3 楼 canonical 2007-12-03  
汗,这句哪里来的?

它从它该来的地方来
2 楼 seen 2007-12-03  
完全看不懂。。。楼主能来点下里巴人的解释一下吗
1 楼 bcccs 2007-12-03  
在符号化的方向上更进一步,如果我们专注于指针的关联语义,而放弃指针的指针这样的混杂概念,就会得到具有独立价值的引用(Reference)概念.

汗,这句哪里来的?

相关推荐

    C++指针与引用的区别

    C++指针与引用的区别 指针和引用是C++语言中两种不同的概念,初学者容易把它们混淆一起。这两种概念都是地址的概念,但它们有很多不同的特点和应用场景。 相同点 1. 都是地址的概念;指针指向一块内存,它的内容...

    C++指针与引用

    此时,使用指针引用就显得尤为重要了。 例如,如果我们想要在函数`func1`中更新`pMyClass`所指向的对象,而不只是修改`pMyClass`本身的值,我们可以这样声明函数: ```cpp void func1(MYCLASS*& pMyClass) { ...

    指针和引用的区别

    在C++编程语言中,指针和引用是两种非常重要的概念,它们都允许我们间接访问内存中的对象。然而,它们之间存在着本质的区别,理解和掌握这些差异对于任何C++程序员来说都是至关重要的。以下是对指针和引用的详细解析...

    智能指针与引用计数详解

    通过阅读和理解这个demo,开发者可以深入理解智能指针的工作原理,并能更好地应用到实际项目中,避免因手动管理内存而导致的错误和隐患。 执行步骤资料可能会涵盖以下内容: 1. 创建并初始化智能指针对象。 2. 使用...

    指针传递和引用传递的区别

    如果想要通过指针参数改变主调函数中的变量,需要使用指向指针的指针或指针引用。 引用传递参数则有所不同,虽然引用在函数内部也是一个局部变量,但它存储的是原始变量的地址。因此,对引用参数的任何操作都会直接...

    C++重要的谨记指针和引用的区别

    在C++编程语言中,指针和引用是两种非常关键的概念,它们都允许我们间接访问内存中的对象。然而,它们之间存在着本质的区别,理解和掌握这些差异对于编写高效、安全的代码至关重要。 首先,指针是一个变量,它存储...

    导图_指针与引用

    在C++编程语言中,指针和引用是两种非常重要的概念,它们都用于间接访问内存中的对象,但各自有着独特的特性和用途。本篇将详细阐述指针与引用的区别和联系,帮助你深入理解这两个核心概念。 首先,我们来看指针。...

    善于使用指针与引用

    引用必须在声明时初始化,并且一旦绑定到一个对象后就无法改变,而指针可以改变其所指向的对象。指针可以是null,可以被重新赋值,还可以进行算术运算,比如递增和递减,这些特性使得指针在处理数组和动态内存分配等...

    C++对象和指针的引用

    从输出结果可以看出,当在被调用函数fun中,改变了对象的数据成员值[m1.setxy(12, 15)]和指向对象指针的数据成员值[m2->setxy(22, 25)]以后,可以看到只有指向对象指针作参数所指向的对象被改变了,而另一个对象作...

    指针和引用

    在这个例子中,`ref`是`x`的引用,对`ref`的任何修改都会直接影响到`x`的值。引用的一个重要特性是它在声明时必须被初始化,并且一旦初始化后不能更改其指向的对象。这与指针形成了鲜明对比。 ### 指针:内存地址的...

    **p与 *&p的区别, 即指向指针的指针和引用指针变量的区别

    在C语言中,**p与*&p是两个常见的指针操作表达式,它们分别涉及到指向指针的指针和引用指针变量的概念。理解这两者的区别,有助于更准确地掌握指针的操作和内存管理。 首先,我们需要明确**p的含义。当声明一个指针...

    c++高阶指针与引用的实例(有代码)

    在C++编程语言中,高阶指针和引用是两种重要的高级特性,它们极大地扩展了对内存和对象的操纵能力。本实验通过两个实例详细介绍了这两种概念及其在实际编程中的应用。 首先,我们来看第一个实例,它涉及到了二级...

    c++指针和引用的使用浅谈

    在C++编程语言中,指针和引用是两种非常重要的概念,它们都允许我们间接访问内存中的对象。本文将深入探讨这两个主题,并通过实例来对比它们的使用方法和特性。 首先,指针是C++中的一种特殊类型,它存储的是一个...

    容器指针引用示例(学长自己写的)

    容器指针引用示例通常会涉及到如何在容器中使用指针和引用,以及它们之间的相互操作。下面我们将深入探讨这些主题。 首先,容器如vector或list通常用于存储对象的集合。当我们在容器中存储指针时,可以指向动态分配...

    使用指针和引用处理虚函数实例

    与指针不同,引用必须在定义时初始化,并且一旦绑定到一个对象,就不能改变。引用在使用上类似于指针,但没有指针的解引用操作。在处理虚函数时,引用同样可以实现多态性,但语法上更加简洁: ```cpp void print...

    变量、指针、引用作函数形参的比较

    经常让初学者头疼,这里我们通过讲解两个实参值互换的例子讲解实参与形参间的关系,并比较普通变量、指针以及引用作形参时的区别,了解地址、名称以及值间的联系,体会指针、引用的强大。

    c++指针和引用

    在C++编程语言中,指针和引用是两种非常重要的概念,它们允许程序员对内存进行直接操作,提高代码的灵活性和效率。对于初学者来说,理解并熟练掌握这两个概念至关重要。 首先,我们来探讨指针。指针在C++中扮演着...

    指针和引用的相同点和不同点的总结.pdf

    ### 指针和引用的相同点和不同点的总结 #### 相同点: - **地址的概念**:无论是指针还是引用,在C++中都与内存地址有关联。它们都可以用来表示或访问内存中的数据。 #### 不同点: 1. **实体与别名**: - **...

    C++指针和引用

    在C++编程语言中,指针和引用是两种非常重要的概念,它们都允许我们间接访问内存中的对象。本文将深入探讨这两个主题,旨在为初学者提供一个清晰的理解基础。 首先,我们来了解一下**指针**。指针是C++中的一种特殊...

Global site tag (gtag.js) - Google Analytics