问题标签 [addressof]

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 回答
1049 浏览

c - 将“指向指针的指针”和“指针的地址”传递给函数之间的区别

我有一个函数,它需要一个char **; 它在内部使用它来维护连续调用之间的上下文。

char **x定义和传递x给它和定义char *x和传递有什么区别&x


对于上下文:在阅读源代码之前,我尝试strtok自己在手册页上实现示例。我有段错误。然后经过尝试,我查看了源代码。

问题是我定义char **xx作为**saveptr参数传递,但是将定义更改为char *x和传递&x解决了问题。

究竟是什么问题?

0 投票
0 回答
126 浏览

c++ - 如果使用 address-of,则访问结构的 NULL 指针的字段有效

我刚刚遇到了一件非常奇怪的事情:

我有一个结构,说:

[我知道我可以说没有 typedef 的 struct STRUCT :)]

和一个指针STRUCT *p = NULL;

假设当我在函数中执行它时,这个指针(仍然)为空:

为什么这实际上有效?但是这个:int a = p->x给出一个nullptr错误?

编辑:据我所知,'->' 运算符的优先级高于地址(&)。

0 投票
2 回答
335 浏览

c++ - 重载地址运算符的用例

我认为重载 address-of operator 是危险的,因为在实现实际需要它&的模板时很容易忽略使用。std::addressof()不过,我想知道重载此运算符的正确用例是什么。特别是,标准库中是否有任何类(模板)可以做到这一点?最后,既然std::addressof()是从C++11开始引入的,有没有什么办法可以获取C++03中有这个重载的对象的地址呢?

0 投票
1 回答
25 浏览

excel - 将发现某些数据的单元格地址分配给变量后,子程序不起作用

我有一个奇怪的问题。只要我不将单元格的地址分配给变量komorka_kkomorka_y. 由于两行标有“LINE 1”和“LINE 2”的代码被禁用,VBA 宏工作正常。这种活动的原因是什么?分配一个与子模块的任何其他部分不相关的值怎么可能使它表现不同?

0 投票
1 回答
726 浏览

c++ - 为什么一元运算符 & 不需要完整的类型?

以下代码在gcc 7.2.0clang 6.0.0下都能正常编译。

我想知道这是怎么回事。如果stru超载了operator&()怎么办?编译器不应该仅仅通过像struct stru. 在我看来,只有std::addressof(s)不完整的类型才可以。

0 投票
1 回答
39 浏览

vb.net - 引用非共享成员线程

我在VS2017中打开了一个用VS2010构建的项目。

代码没有改变,并且 2010 版本构建完美,但是使用 2017 构建时,我收到“对非共享成员的引用需要对象引用”错误,并带有以下代码。

'AddressOf' 部分会引发错误。

VS2017 有什么变化还是我忘了修改什么?自从我看到这个已经有一段时间了,但我有一个新的签名证书,并且 System.Threading 像往常一样被导入。

Check_Form.checkList 子是公共的,但不共享,但过去从未如此,并且始终运行良好。

谢谢。

0 投票
1 回答
52 浏览

c++ - const 引用函数参数的地址何时是唯一的?

在下面的示例代码中,我想知道两个调用何时log_cref_address会可靠地打印相同的地址。

在我的机器上,main打印

从许多这样的输出中,我观察到其main行为如下:

  1. 前三个调用foo打印相同的地址。
  2. 最后两次调用foo(来自线程)打印前三个调用未打印的地址。
  3. 在对 的最后两次调用中foolog_cref_address当且仅当从子线程调用时打印相同的地址。

在任何机器上,哪些行为(如果有)是由 C++ 标准保证的?

0 投票
1 回答
158 浏览

c++ - 是否可以在我的对象上停止 std::addressof?

出于某种教育原因,我设法通过将引用运算符重载&为已删除的成员函数或private方法来阻止其他人获取我的类对象的地址。但是 C++11 提供了一个新的模板函数std::addressof,它返回一个对象的地址。所以我也想禁用它,但是我陷入了半解决方案。这是我的代码尝试:

如您所见,如果我将addressof哪个是朋友模板函数调用到我的班级,那么它可以正常工作。但是如果有人调用std::addressof我的类对象,编译器不会阻止他。

我需要一些方法来阻止std::addressof我的对象不被调用。

感谢你们。

0 投票
1 回答
80 浏览

c++ - 对于 char d,执行 cout << &d 时出现奇怪的输出

我刚开始学习c ++,我真的不明白,为什么当我cout &d 时,它显示char d 的次数与我已经显示的次数一样多+ 加1 次。所以它在这里显示 3 次字符“d”......对于行
cout << &d << endl;

如果有人能用简单的话解释我为什么,我会感谢他。如果这个问题很愚蠢,我很抱歉。

0 投票
1 回答
59 浏览

c - 为什么只使用在这个 C 程序的参数列表中声明的指针进行引用传递?

这是 Robert Wood 的“C Programming for Scientists and Engineers”中的 Program 3.7。在下面的代码中,指针没有在 main() 的主体中声明和初始化,而是直接在 read_data() 函数的参数列表中。

通常,在写代码的时候,我会先声明3个指针(int *int_ptr, float *float_ptr, char *char_ptr),然后将a、b、c的地址分配给它们。但是在下面的程序中,调用 read_data(&a, &b, c); 时会传递“地址”运算符。通过 void read_data(int *int_ptr, float *float_ptr, char *char_ptr){...} 的参数列表,我们有“内容”运算符,这看起来不一致,但有效。另外, fscanf(stdin,"%d %f %s", int_ptr, float_ptr, char_ptr); 将用户提供的数据存储在指针的地址中,而我认为应该将它们写入变量 a、b 和 c 的内容中,如下所示:

但我错了。

否则程序可以工作,但如果我必须这样写,我将无法做到。所以,我希望你帮助我理解并提供替代解决方案。