问题标签 [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.
c++ - 将 std::vector::data 传递给期望类型**(双指针)的函数
正如标题所描述的,我试图将指向 a 数据的指针传递给std::vector
一个需要双指针的函数。以下面的代码为例。我有一个 int 指针d
,它被传递给myfunc1
as &d
(仍然不确定是否将其称为指针的引用或什么),其中函数将其引用更改为填充1,2,3,4
. 但是,如果我有一个std::vector
ints 并尝试传递&(vec.data())
给myfunc1
编译器会抛出错误lvalue required as unary ‘&’ operand
。我已经(int *)&(vec.data())
按照这个答案尝试过类似的方法,但它不起作用。
仅供参考,我知道我可以做一些事情,比如myfunc2
直接将向量作为参考传递,工作就完成了。但我想知道是否可以使用myfunc1
std::vector 的指针。
任何帮助将不胜感激。
编辑:我的实际代码所做的是从磁盘读取一些二进制文件,并将部分缓冲区加载到向量中。我在从读取函数中获取修改后的向量时遇到了麻烦,这就是我想出的让我解决它的方法。
c - 如何清理由“out”指针参数创建的分配结构?
我有一个结构变量,其传递如下:
在这里,当我在 gdb 中运行它并进入function1()
时,我看到为变量aVAR
创建了一个临时内存地址。
广发银行:
例如,
- 最初,aVAR 的地址是
0x654321
- 稍后一段时间,直到第一条指令
function1()
没有被执行,aVAR1
它被保存在某个临时地址中,如0x7ffffffffebcdf
. - 执行
Node* value=NULL;
完 which 是 中的第一条指令后function1()
,aVar1
的地址0x654321
又是。 - 但是这个临时 (
0x7ffffffffebcdf
) 地址没有被清除:即使在函数退出后,0x7ffffffffebcdf
也没有被清除
我想0x7ffffffffebcdf
在函数退出后被清除,但该0x7ffffffffebcdf
地址没有可以访问该内存的指针。在 GCC 中链接时是否有任何选项可以防止这种情况发生?
如果我为 aVAR 添加一个 malloc 并稍后使用 memset 和 free 清除它,问题得到解决,但是当我看到时,我失去了对 malloc() 分配的内存块的引用,我将无法释放( ) 分配的内存(导致内存泄漏)。
c - C 中是否有类似于 C# 的 out/out 关键字的东西?
在此函数中,最后一行正在打印正确的值。
但在这里我得到了一些垃圾价值。
我知道问题是什么,我知道为什么会这样,我唯一不知道的是如何纠正这个问题? C# 中有像 ref 和 out 这样的关键字可以用来实现相同的功能,但问题是,我们如何在 C 语言中做同样的事情?
我不想从方法中返回值
c++ - 通过引用调用与通过指针参数调用 todo pre 和 postincrement 的区别
我知道如何通过引用调用和通过指针操作调用。但我对在增量操作前和增量后同时执行这两种操作感到困惑。这里是代码片段。
使用指针参数通过引用调用
使用引用参数通过引用调用
这是驱动程序代码
为什么在 fun2() *x++ 中输出 10 而不是 11 但 ++*x 工作正常,而在 fun3() 中 x++ 和 ++x 工作正常?
c - 将指针复制到函数中的结构(链表)
我想创建一个没有全局变量的单链表。我用初始化第一个元素,NULL
然后想将第一个元素复制node
到list_
. 它被复制到函数中,但副作用不起作用。在我的主要功能中,价值仍然是NULL
. 如果我在函数中返回结构add_element()
一切正常但是,是否有可能l
在不更改函数结构和结构本身的情况下获取节点的值?
c++ - 如何将本地数组传递给另一个函数调用?
我正在开展一个项目,该项目需要在它们自己的功能中执行某些操作。现在,我必须获取生成的随机值,并将它们从数组中输出。我将值存储在 中numarray
,但我不知道如何在函数中调用该数组来输出值。我设置了一个函数,它似乎会获取数组并输出它,但我不知道如何在没有参数的情况下调用该函数以在main
. 这是输出数组的一种可能方式,还是应该以完全不同的方式完成。
PS:我知道命名空间不好,但这是我必须做的才能通过课程。
该 randomgenerator
函数是生成值并将它们存储在文件中的原因。该read
函数获取这些值并将它们存储在一个数组中。
printarray
是我要输出数组值的函数,这给了我问题。
arrays - 在 C 函数中通过指针传递结构数组以更新指针引用
C++ 允许通过引用传递,但在 C 中不允许。
问题是,如何使用 C 函数来更新对指针传递的结构数组的引用。
我的问题可以用代码更好地解释。
而且,输出是:
我基本上想重写/修复 UpdateMap 函数,使其像 GetMap 一样工作,除了没有返回。[我可能仍然没有意义]。
我希望调用者函数定义映射指针 *pMap(在本例中为 main)。当我将此映射指针传递给函数 (UpdateMap) 时,UpdateMap 函数将更新指针值,以指向 map1 或 map2。更重要的是,更新映射指针引用,这样当主函数使用映射指针时,它指向由 UpdateMap 函数更新的映射。
在上面的代码中,UpdateMap 获取 *pMap 作为函数参数,并且可以修改它的值以仅在该函数中使用。
c++ - 通过引用函数 C++ 传递迭代器指向的对象
我虽然我理解迭代器和寻址等,但显然不是。请参阅下面的代码,这纯粹是一个示例。
我需要能够通过指针传递或将mystructs的每个结构引用到MyFunc()。该函数应该能够更新传递的实际结构,而不是通过副本或值。
我收到编译器错误:
error: cannot convert 'MY_STRUCT' to 'MY_STRUCT*' for argument '1' to 'void MyFunc(MY_STRUCT*)'
如果我只是传递迭代器地址,这也行不通。
这样做的正确方法是什么。提前致谢。
c++ - C++ 中的执行时间差异(通过引用传递和通过值传递的函数之间)是否显着?
对于 Leetcode 问题 1312,我实现了 pass by value 解决方案,我的测试用例的执行时间在 120ms 以上,对于通过引用传递的相同测试用例,执行时间大幅减少到大约 8ms,如何?以下是两种解决方案:
120ms + 解决方案/不接受:
~8ms 解决方案:
我有一些问题:
- 为什么差异如此显着?
- 它只发生在字符串上吗,我的意思是原始/内置数据类型的行为方式是否相同?
- 按指针传递会导致与按引用传递相同的执行吗?
- 另外,根据我对引用变量的理解,它指向同一个地址,只是它有另一个名字,这是正确的吗?
谢谢你。
c++ - 返回的地址始终为 0 而不是实际值
这是简单的代码:
输出是意外的。第一个 cout 打印一个看起来像地址的地址,但主要的 cout 打印一个合法的 0。我在任何地方都找不到解释。