标签: reference

C++中指针变量和引用变量之间有什么区别?

我知道引用是语法糖,因此代码更容易读写.

但有什么区别?


以下答案和链接摘要:

  1. 指针可以重新分配任意次数,而在绑定后无法重新分配引用.
  2. 指针可以指向nowhere(NULL),而引用总是指对象.
  3. 您不能使用指针来获取引用的地址.
  4. 没有"参考算术"(但您可以获取引用所指向的对象的地址,并对其进行指针运算&obj + 5).

澄清一个误解:

C++标准非常谨慎,以避免规定编译器如何实现引用,但每个C++编译器都将引用实现为指针.也就是说,声明如下:

int &ri = i;
Run Code Online (Sandbox Code Playgroud)

如果它没有完全优化,则分配与指针相同的存储量,并将地址i放入该存储中.

因此,指针和引用都使用相同数量的内存.

作为基本规则,

  • 使用函数参数和返回类型中的引用来提供有用的自我文档化接口.
  • 使用指针实现算法和数据结构.

有趣的读物:

c++ pointers reference c++-faq

3115
推荐指数
34
解决办法
94万
查看次数

如何通过引用传递变量?

Python文档似乎不清楚参数是通过引用还是值传递,以下代码生成未更改的值'Original'

class PassByReference:
    def __init__(self):
        self.variable = 'Original'
        self.change(self.variable)
        print(self.variable)

    def change(self, var):
        var = 'Changed'
Run Code Online (Sandbox Code Playgroud)

有什么我可以通过实际参考传递变量吗?

python reference parameter-passing pass-by-reference

2480
推荐指数
22
解决办法
124万
查看次数

'ref'和'out'关键字之间有什么区别?

我正在创建一个函数,我需要传递一个对象,以便它可以被函数修改.有什么区别:

public void myFunction(ref MyClass someClass)
Run Code Online (Sandbox Code Playgroud)

public void myFunction(out MyClass someClass)
Run Code Online (Sandbox Code Playgroud)

我应该使用哪个以及为什么?

c# reference ref out keyword

851
推荐指数
15
解决办法
37万
查看次数


如何复制字典并仅编辑副本

有人可以向我解释一下吗?这对我没有任何意义.

我将字典复制到另一个字典中并编辑第二个字典,然后更改两个字典 为什么会这样?

>>> dict1 = {"key1": "value1", "key2": "value2"}
>>> dict2 = dict1
>>> dict2
{'key2': 'value2', 'key1': 'value1'}
>>> dict2["key2"] = "WHY?!"
>>> dict1
{'key2': 'WHY?!', 'key1': 'value1'}
Run Code Online (Sandbox Code Playgroud)

python dictionary reference python-3.x

737
推荐指数
15
解决办法
52万
查看次数

定位的程序集的清单定义与程序集引用不匹配

我试图在C#Windows窗体应用程序(Visual Studio 2005)中运行一些单元测试,我收到以下错误:

System.IO.FileLoadException:无法加载文件或程序集"Utility,Version = 1.2.0.200,Culture = neutral,PublicKeyToken = 764d581291d764f7"或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)**

在x.Foo.FooGO()

在Foo.cs中的x.Foo.Foo2(String groupName_):第123行

在FooTests.cs中的x.Foo.UnitTests.FooTests.TestFoo():第98行**

System.IO.FileLoadException:无法加载文件或程序集'Utility,Version = 1.2.0.203,Culture = neutral,PublicKeyToken = 764d581291d764f7'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)

我查看我的参考资料,我只参考Utility version 1.2.0.203(另一个是旧的).

关于我如何弄清楚试图引用这个旧版本的DLL文件的任何建议?

此外,我认为我的硬盘上甚至没有这个旧组件.有没有工具可以搜索这个旧的版本化程序集?

c# dependencies compiler-errors reference version

715
推荐指数
20
解决办法
93万
查看次数

"=="和"是"之间有区别吗?

我的Google-fu让我失望了.

在Python中,以下两个相等的测试是否等效?

n = 5
# Test one.
if n == 5:
    print 'Yay!'

# Test two.
if n is 5:
    print 'Yay!'
Run Code Online (Sandbox Code Playgroud)

对于您要比较实例的对象(list比如说),这是否适用?

好的,所以这样的答案我的问题:

L = []
L.append(1)
if L == [1]:
    print 'Yay!'
# Holds true, but...

if L is [1]:
    print 'Yay!'
# Doesn't.
Run Code Online (Sandbox Code Playgroud)

所以==测试值测试的地方is是否是同一个对象?

python equality reference semantics

630
推荐指数
11
解决办法
33万
查看次数

MongoDB关系:嵌入还是引用?

我是MongoDB的新手 - 来自关系数据库背景.我想设计一个带有一些注释的问题结构,但我不知道用于评论的关系:embed或者reference

有一些注释的问题,比如stackoverflow,会有这样的结构:

Question
    title = 'aaa'
    content = bbb'
    comments = ???
Run Code Online (Sandbox Code Playgroud)

首先,我想使用嵌入式注释(我认为embed在MongoDB中推荐),如下所示:

Question
    title = 'aaa'
    content = 'bbb'
    comments = [ { content = 'xxx', createdAt = 'yyy'}, 
                 { content = 'xxx', createdAt = 'yyy'}, 
                 { content = 'xxx', createdAt = 'yyy'} ]
Run Code Online (Sandbox Code Playgroud)

很清楚,但我担心这种情况:如果我想编辑指定的评论,我该如何获取其内容及其问题?没有_id让我找到一个,也没有question_ref让我找到它的问题.(我是新手,我不知道如果没有_id和没有任何方法可以做到这一点question_ref.)

我必须用refembed?然后我必须创建一个新的评论集合?

embed reference mongodb

494
推荐指数
9
解决办法
15万
查看次数

找不到类型或命名空间名称

我有C#几个项目的解决方案Visual Studio 2010.一个是测试项目(我将其称为" PrjTest "),另一个是Windows Forms Application项目(我将其称为" PrjForm ").还有一个由PrjForm引用的第三个项目,它能够成功引用和使用.

PrjForm引用PrjTest,而PrjForm有一个带有using语句的类:

using PrjTest;
Run Code Online (Sandbox Code Playgroud)
  1. 参考已正确添加
  2. using 声明正确到位
  3. 拼写是正确的
  4. PrjTest构建成功
  5. PrjForm几乎可以构建,但是会using PrjTest;出现错误:

找不到类型或命名空间名称'PrjTest'(您是否缺少using指令或程序集引用?)

我尝试过以下方法来解决这个问题:

  1. 删除了Resharper(因为Resharper在识别引用的项目时没有遇到任何麻烦,我认为它可能值得一试)
  2. 删除并重新添加了引用和using语句
  3. 从头开始重新创建PrjForm
  4. PrjForm目前驻留在PrjTest文件夹中,我尝试将其移动到外部文件夹
  5. 使用新的副本在另一台计算机上加载解决方案 VS 2010

我做完了我的功课,花了很长时间在线寻找答案,但这些解决方案都没有帮助.

我还能尝试什么?

c# reference using-directives using-statement visual-studio-2010

454
推荐指数
9
解决办法
75万
查看次数

Javascript引用与价值

我正在寻找一些很好的综合阅读材料,当Javascript按值传递某些内容时,以及何时通过引用和修改传递的项目时会影响函数外部的值,何时不会.我还对通过引用与值分配另一个变量以及是否遵循任何不同的规则而不是作为函数参数传递感兴趣.

我已经做了很多搜索并找到了很多具体的例子(其中很多都是在SO上),我可以从中开始拼凑出真正的规则,但我还没有找到一个单一的,写得很好的文档,描述了这一切.

此外,语言中是否有方法可以控制是通过引用还是通过值传递某些内容?

以下是我想要了解的一些问题类型.这些只是示例 - 我实际上是在了解语言所遵循的规则,而不仅仅是具体示例的答案.但是,这里有一些例子:

function f(a,b,c) {
   a = 3;
   b.push("foo");
   c.first = false;
}

var x = 4;
var y = ["eeny", "miny", "mo"];
var z = {first: true};
f(x,y,z);
Run Code Online (Sandbox Code Playgroud)

对于所有不同类型,x,y和z的内容何时在f的范围之外变化?

function f() {
    var a = ["1", "2", "3"];
    var b = a[1];
    a[1] = "4";
    // what is the value of b now for all possible data types that the array in "a" might hold?
}

function f() {
    var a = [{yellow: "blue"}, {red: …
Run Code Online (Sandbox Code Playgroud)

javascript reference pass-by-reference pass-by-value

367
推荐指数
4
解决办法
28万
查看次数