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

python - 为什么 ctypes.addressof() 使用 python2 和 python3 给出不同的结果

最近我试图从 python2 转移到 python3,在我的代码中有一些关于从硬件读取数据的工作,这些硬件有一个 .py 接口文件调用外部 .dll 库。数据在.dll和python例程之间由内存共享,具体来说,ctypes.creat_string_buffer()和ctypes.addressof()在python2.7环境下运行正常,但在python3.6下却出现意外结果,原因似乎是 ctypes.addressof() 给出了巨大的差异地址值,我想知道是什么原因?

'''python2.7的addressof()输出

'''

'''python3.6的addressof()输出

'''

在我看来,python2和python3下addressof()函数的输出应该是近似的,但实际上并非如此。有人可以帮助我指出例程有什么问题,或者与我一起,不胜感激!

0 投票
2 回答
123 浏览

vba - VBA.CBlah 和 CBlah 的区别

奇怪的观察:

通常,当我想将地址保存到变量中的函数时,我会执行以下操作:

但是我刚刚发现我可以使用 1-liner

尽管

...不起作用并引发

编译错误:

预期:表达式

这是怎么回事?据我所知,唯一的区别是它CLngPtr是在全局变量(类?)中声明的,而VBA.CLngPtr它是明确限定的,但我不知道为什么这会导致观察到的行为(它们都指向同一个函数)他们?)

0 投票
0 回答
285 浏览

c++ - 为什么在右值编译时调用地址运算符?

AFAIK 获取右值的地址是非法的,因为地址运算符&获取一个左值并返回对象调用地址的地址。

这是一个我试图理解但发现它有点混乱的例子:

  • 在我使用预减运算符的行中,它是可以的,因为该运算符&具有相同的优先级,并且从右到左(RL)进行评估,因此--首先评估并返回一个左值(也采用左值) . then&被评估,所以&左值是可以的。

  • 上述后减运算符中的问题,它接受一个左值并返回一个右值,并且优先级高于&. 因此,在这些表达式中,我调用&了通常不允许的右值。但是为什么代码编译并给出不同的结果(地址)?

  • 在带有标志的 Wandbox 上编译时,-pedantic它不会编译:

    也在 MSVC++14 上使用/Wall.

  • 那么它是我的代码中未定义的行为吗?

  • 那么为什么 C++ 允许&在右值上调用运算符的地址而标准不允许呢?
  • 最后我想知道这些不同的地址在这样的表达中来自哪里:std::cout << &it-- << std::endl;?但是取消引用的值是正确的!
0 投票
2 回答
67 浏览

c - 使用未初始化的变量而不调用未定义的行为

从 6.3.2.1(强调我的)

如果左值指定了一个可以使用寄存器存储类声明的具有自动存储持续时间的对象(从未使用过它的地址),并且该对象未初始化(未使用初始化程序声明并且在使用之前没有对其进行分配) ),行为未定义。

这意味着,如果无法使用寄存器存储类声明自动对象(获取它的地址):

根据 6.3.2.1,if (x == 2)在我使用未初始化对象的值的地方没有未定义的行为。如果这是真的,并且这里没有 UB,那么定义的行为是什么?x根据标准,我应该期待什么?

0 投票
2 回答
123 浏览

c++ - 为什么 someNumber = rand() & 100 + 1; 不产生错误?

我试图在 (1 - 100) 和要运行的代码之间生成一个随机数,但没有做我想要的。我注意到我不小心输入了&,而不是%使用 rand() 函数,编译器没有我一个错误。到底发生了什么?为什么没有产生错误?&返回地址吗?这个错误很难找到,因为它是一个简单的错字,很容易错过。

这是错字:

但这就是我要输入的内容:

这是使用带有 & 的 rand()的代码,以防您希望运行它:

0 投票
2 回答
146 浏览

c - 如何在同一语句中使用地址运算符以及指针上的前缀增量?

是否可以在同一语句中的指针上使用地址运算符和前缀增量,如果是的话如何?

例子,

我收到错误

错误:需要左值作为一元“&”操作数

uint8_t **dptr = &(++ptr);

是否有任何其他选择,而不是使其成为 2 个单独的语句(增量(ptr++),然后是地址(&ptr))。

0 投票
1 回答
67 浏览

excel - 将过程的地址返回给变量

首先对不起我的英语,它不是我的母语。

我想将我创建的过程的地址关联到一个变量。实际上,我使用的是 Windows 定时器,在定时器代码中,函数 SetTimer 是这样使用的:

我想用公共变量替换“AddressOf move2”,为此我需要获取过程的地址,但我不知道该怎么做。我试着写

而且它不起作用(变量类型=长)

0 投票
6 回答
98 浏览

c - C中的&p和*p_p有什么区别?

我刚研究C语言中的指针,我想知道指针的地址是什么,在网上搜索后,我写了这段代码。

我期望两个相同的输出。谁能解释为什么输出不同?

0 投票
2 回答
59 浏览

arrays - 在这种情况下我需要指针中的&符号?

我试图理解指向指针的指针,但我不明白为什么在第一种情况下我需要 (&) 和号(我收到一条消息 [Error] cannot convert 'char*' to 'char**' in assignment)和第二种情况情况下我不需要和号

第一种情况:

第二种情况:

0 投票
2 回答
61 浏览

arrays - C中地址的地址。有效与否?

我以为我理解 c 和指针,但只是在调试我认为不应该工作但确实可以工作的其他人的代码。作为一个(粗略的)例子......

令我惊讶的是,上面的两个调用的工作方式完全相同。第一个给出编译器警告(不兼容的指针类型),但它仍然可以正确构建和运行。所以我的问题是:这是 C 中的预期行为,还是只是我使用的编译器很聪明并修复了错误?fwiw,这是使用微芯片 xc16 编译器。