问题标签 [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 投票
2 回答
302 浏览

c++ - 将 std::vector::data 传递给期望类型**(双指针)的函数

正如标题所描述的,我试图将指向 a 数据的指针传递给std::vector一个需要双指针的函数。以下面的代码为例。我有一个 int 指针d,它被传递给myfunc1as &d(仍然不确定是否将其称为指针的引用或什么),其中函数将其引用更改为填充1,2,3,4. 但是,如果我有一个std::vectorints 并尝试传递&(vec.data())myfunc1编译器会抛出错误lvalue required as unary ‘&’ operand。我已经(int *)&(vec.data())按照这个答案尝试过类似的方法,但它不起作用。

仅供参考,我知道我可以做一些事情,比如myfunc2直接将向量作为参考传递,工作就完成了。但我想知道是否可以使用myfunc1std::vector 的指针。

任何帮助将不胜感激。

编辑:我的实际代码所做的是从磁盘读取一些二进制文件,并将部分缓冲区加载到向量中。我在从读取函数中获取修改后的向量时遇到了麻烦,这就是我想出的让我解决它的方法。

0 投票
2 回答
107 浏览

c - 如何清理由“out”指针参数创建的分配结构?

我有一个结构变量,其传递如下:

在这里,当我在 gdb 中运行它并进入function1()时,我看到为变量aVAR创建了一个临时内存地址。

广发银行:

例如,

  1. 最初,aVAR 的地址是0x654321
  2. 稍后一段时间,直到第一条指令function1()没有被执行,aVAR1它被保存在某个临时地址中,如0x7ffffffffebcdf.
  3. 执行Node* value=NULL;完 which 是 中的第一条指令后function1()aVar1的地址0x654321又是。
  4. 但是这个临时 ( 0x7ffffffffebcdf) 地址没有被清除:即使在函数退出后,0x7ffffffffebcdf也没有被清除

我想0x7ffffffffebcdf在函数退出后被清除,但该0x7ffffffffebcdf地址没有可以访问该内存的指针。在 GCC 中链接时是否有任何选项可以防止这种情况发生?

如果我为 aVAR 添加一个 malloc 并稍后使用 memset 和 free 清除它,问题得到解决,但是当我看到时,我失去了对 malloc() 分配的内存块的引用,我将无法释放( ) 分配的内存(导致内存泄漏)。

0 投票
1 回答
41 浏览

c - C 中是否有类似于 C# 的 out/out 关键字的东西?

在此函数中,最后一行正在打印正确的值。

但在这里我得到了一些垃圾价值。

我知道问题是什么,我知道为什么会这样,我唯一不知道的是如何纠正这个问题? C# 中有像 ref 和 out 这样的关键字可以用来实现相同的功能,但问题是,我们如何在 C 语言中做同样的事情?

我不想从方法中返回值

0 投票
1 回答
45 浏览

c++ - 通过引用调用与通过指针参数调用 todo pre 和 postincrement 的区别

我知道如何通过引用调用和通过指针操作调用。但我对在增量操作前和增量后同时执行这两种操作感到困惑。这里是代码片段。

使用指针参数通过引用调用

使用引用参数通过引用调用

这是驱动程序代码

为什么在 fun2() *x++ 中输出 10 而不是 11 但 ++*x 工作正常,而在 fun3() 中 x++ 和 ++x 工作正常?

0 投票
2 回答
104 浏览

c - 将指针复制到函数中的结构(链表)

我想创建一个没有全局变量的单链表。我用初始化第一个元素,NULL然后想将第一个元素复制nodelist_. 它被复制到函数中,但副作用不起作用。在我的主要功能中,价值仍然是NULL. 如果我在函数中返回结构add_element()一切正常但是,是否有可能l在不更改函数结构和结构本身的情况下获取节点的值?

0 投票
2 回答
1612 浏览

c++ - 如何将本地数组传递给另一个函数调用?

我正在开展一个项目,该项目需要在它们自己的功能中执行某些操作。现在,我必须获取生成的随机值,并将它们从数组中输出。我将值存储在 中numarray,但我不知道如何在函数中调用该数组来输出值。我设置了一个函数,它似乎会获取数组并输出它,但我不知道如何在没有参数的情况下调用该函数以在main. 这是输出数组的一种可能方式,还是应该以完全不同的方式完成。

PS:我知道命名空间不好,但这是我必须做的才能通过课程。

randomgenerator函数是生成值并将它们存储在文件中的原因。该read函数获取这些值并将它们存储在一个数组中。 printarray是我要输出数组值的函数,这给了我问题。

0 投票
2 回答
59 浏览

arrays - 在 C 函数中通过指针传递结构数组以更新指针引用

C++ 允许通过引用传递,但在 C 中不允许。

问题是,如何使用 C 函数来更新对指针传递的结构数组的引用。

我的问题可以用代码更好地解释。

而且,输出是:

我基本上想重写/修复 UpdateMap 函数,使其像 GetMap 一样工作,除了没有返回。[我可能仍然没有意义]。

我希望调用者函数定义映射指针 *pMap(在本例中为 main)。当我将此映射指针传递给函数 (UpdateMap) 时,UpdateMap 函数将更新指针值,以指向 map1 或 map2。更重要的是,更新映射指针引用,这样当主函数使用映射指针时,它指向由 UpdateMap 函数更新的映射。

在上面的代码中,UpdateMap 获取 *pMap 作为函数参数,并且可以修改它的值以仅在该函数中使用。

0 投票
2 回答
229 浏览

c++ - 通过引用函数 C++ 传递迭代器指向的对象

我虽然我理解迭代器和寻址等,但显然不是。请参阅下面的代码,这纯粹是一个示例。

我需要能够通过指针传递或将mystructs的每个结构引用到MyFunc()。该函数应该能够更新传递的实际结构,而不是通过副本或值。

我收到编译器错误:

error: cannot convert 'MY_STRUCT' to 'MY_STRUCT*' for argument '1' to 'void MyFunc(MY_STRUCT*)'

如果我只是传递迭代器地址,这也行不通。

这样做的正确方法是什么。提前致谢。

0 投票
1 回答
121 浏览

c++ - C++ 中的执行时间差异(通过引用传递和通过值传递的函数之间)是否显着?

对于 Leetcode 问题 1312,我实现了 pass by value 解决方案,我的测试用例的执行时间在 120ms 以上,对于通过引用传递的相同测试用例,执行时间大幅减少到大约 8ms,如何?以下是两种解决方案:

120ms + 解决方案/不接受:

~8ms 解决方案:

我有一些问题:

  • 为什么差异如此显着?
  • 它只发生在字符串上吗,我的意思是原始/内置数据类型的行为方式是否相同?
  • 按指针传递会导致与按引用传递相同的执行吗?
  • 另外,根据我对引用变量的理解,它指向同一个地址,只是它有另一个名字,这是正确的吗?

谢谢你。

0 投票
2 回答
83 浏览

c++ - 返回的地址始终为 0 而不是实际值

这是简单的代码:

输出是意外的。第一个 cout 打印一个看起来像地址的地址,但主要的 cout 打印一个合法的 0。我在任何地方都找不到解释。