问题标签 [pass-by-pointer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
887 浏览

c++ - 指针大小和引用传递与指针传递

我有两个问题:

  1. 我说得对吗,在 4 位系统上,指针是 4 个字节?

  2. “通过引用传递”和“通过指针传递”是同一件事,只是措辞不同吗?

0 投票
2 回答
338 浏览

visual-c++ - 我如何避免在这个程序中使用指针变量和基于指针的传递引用?

我如何避免在这个程序中使用指针变量和基于指针的传递引用?正如我的导师所说,没有必要使用指针。这是一个龟兔赛跑的模拟器,您将使用数字生成来模拟这个令人难忘的事件。

0 投票
2 回答
392 浏览

pass-by-reference - 按值传递时更改变量

我有一个声明双精度的主函数。然后它将它传递给 void Display,后者显示双精度。然后 main 将 double(按值)传递给函数 void Pointers,该函数调用 display 函数,然后更改 double 的值。然后我再次从 main 中运行 display 函数,再次将它传递给 double。但是双精度已更改为新值(我们在 Pointers() 中将其更改为),我不明白为什么。

据我了解,当我们按值传递时,我们正在向函数传递一个副本以供使用,它可以对该副本执行任何操作,但不会更改原始版本。如果我们通过引用传递,那么我们只是将地址传递给原始数据。

既然我们按值传递,它不应该改变它自己的副本并留下原始的吗?

下面的代码供参考。

这是作业(我之所以发布,是因为第 5 步特别告诉我如何传递双精度和指针)

编写一个程序来创建
1. 创建一个标题函数,显示您的姓名、班级编号和日期。
2. 在 main 中
• 调用标题函数
• 创建一个 double 并为其赋值
• 创建一个指向该 double 的指针
3. 编写一个 Display 函数,该函数接受一个字符串、一个指针和一个 double 并使用 cout 语句显示描述您正在显示的内容的文本,然后依次显示:显示
的位置(从 main 或方法调用?)
双精度地址
双精度值
指针地址
指针值(指针持有地址,这应该是double的地址)
解引用的指针值(指针指向什么,double值)
4.从main调用display函数,显示指针和double的属性.
5. 创建一个返回类型为 void 的函数,该函数从 main 中获取一个指针和一个 double(按值传递 double)。然后像在 main 中那样显示指针的值并加倍。
• 更改双精度的值,然后将双精度的值分配给该点(*pointer = double)
• 如果ptr 是点名称,x 是双精度的名称,则*ptr = x;
6.回到main中重新显示指针和double的属性
7. 添加暂停。
8. 回答这一个问题:
• 调用标题函数
• 显示以下问题及其答案。
“如果你将double按值传递给函数,为什么你从函数返回后,main中double的值会发生变化?”

0 投票
3 回答
136 浏览

copy-constructor - C++ 通过指针复制构造函数

您好,我想创建一个新的类变量,它是一个指针,并通过复制构造函数对其进行初始化。虽然我知道复制构造函数是如何通过引用工作的,但我不知道该怎么做。你能帮助我吗?例如我有这个定义:

在另一个代码段中,我执行以下操作:

但我得到一个分段错误。你能帮助我吗?我也试过:

但它也不起作用。

0 投票
1 回答
2276 浏览

c - 如何打印链接列表中的值?

在一天的大部分时间里,我一直在尝试用链表编写一个简单的程序。我的主要问题似乎是不明白为什么我正在访问的内存不是我想的那样。我对 printf 很疯狂,我可以输出所有可能形式的数据,但仍然无法理解为什么它不起作用。

例如,当我将 传递&head给一个函数时,node **location我想检查内部location(因此head)的值是否是NULL,我应该使用if(!*location) return;还是应该使用if(!location) return;,看起来后者是正确的,但为什么呢?

当我想创建一个node *current内部函数来跟踪事物时,我应该从node* current = *heador开始node* current = head,最重要的是,为什么?我注意到后者更好,但我仍然无法理解。当我对语句进行类型转换时,警告消失了,但它似乎没有解决任何问题。

这是我一直在编写的一些函数,请您给我一些提示,说明我在代码中没有意义的地方。最好,我希望了解为什么输出似乎是一个内存位置,然后访问坏内存。

0 投票
3 回答
4725 浏览

c++ - 数组作为c ++中的输出参数

我创建了一个返回错误代码(ErrCode枚举)并传递两个输出参数的函数。但是当我打印函数的结果时,我没有在数组中得到正确的值。

getTrimmedList函数是这样的:

在哪里:

  • foo是一个包含对象数组的FooBar对象
  • foo.getListCount()返回具有类型的对象的数量FOO_TYPE_1
  • FOO_TYPE_1是我们想要获取/列出的对象的类型
  • foo.getEntryByIndex()返回类型为ith的FooBar对象FOO_TYPE_1
  • bar.isDeleted是一个标志,指示是否bar被视为“已删除”

我的错误是什么?

编辑:

抱歉,我复制了错误的行。我在上面发表了评论并输入了正确的行。

编辑 2

我无法控制fooand的回报bar。它们的所有函数返回都是ErrCode,输出是通过参数传递的。

0 投票
1 回答
1768 浏览

c++ - 总是通过引用传递是一种不好的做法吗?

首先,我想在这里澄清我的问题。在我的编码开发过程中,我发现自己在我的类成员函数中通过引用传递,除了那些内置类型。但是我有一个想法,为什么我不使用指针来传递参数(通过指针传递)。

通过引用传递而不是通过指针传递是一种不好的做法吗?

0 投票
1 回答
2450 浏览

pointers - 将指针传递给静态结构对象

我试图通过将其指针传递给另一个函数并通过其中的指针修改它来修改静态结构对象。但即使在执行修改函数之后,结构的值也是完整的。

此外,当我在此代码上运行 gdb 时,我看到代码流一进入 modifier_function_b() 函数 gdb 就会报告变量 ptr 的两个条目:ptr 和 ptr@entry。所有的修改都在 ptr 上完成,而指向 obj 真实位置的 ptr@entry 没有被修改。有人可以指出这里可能发生的事情吗?指向静态变量的指针是 const 指针,我们不能在它们的范围之外修改它们吗?

还有一件事......如果我删除静态限定符,则不会看到这种行为,这让我认为指向静态的指针是一种 const 指针。

提前致谢 :)

0 投票
4 回答
3036 浏览

c++ - 使用双指针为结构成员赋值

我有一个函数,它接受一个指向结构的双指针并分配一个值。但是,当我尝试访问成员时,我得到一个“访问冲突写入位置......” member1。这是我的代码:

0 投票
3 回答
129 浏览

c++ - 引用和指针的含义?

在我的项目中,有这样一个函数调用的定义。

在调用的地方,传递的参数是 void*,为什么我们不能直接接收它作为指针本身,而不是这个?