gpt4 book ai didi

c++ - 为什么指向函数的指针等于 1?

转载 作者:太空狗 更新时间:2023-10-29 20:01:46 25 4
gpt4 key购买 nike

<分区>

检查以下代码:

#include <iostream>
using namespace std;

int& foo() {
static int i = 0;
return i;
}

int main() {
cout << &foo() << endl;
cout << &foo << endl;

return 0;
}

如您所见,第一个 cout 打印 foo() 的返回值地址,这将是 中的静态变量 i富()。对于第二个 cout,我期望 &foo 返回 foo() 函数的地址,如 here 所述:

2) If the operand is a qualified name of a non-static member, e.g. &C::member, the result is a prvalue pointer to member function or pointer to data member of type T in class C. Note that neither &member nor C::member nor even &(C::member) may be used to initialize a pointer to member.

但令我惊讶的是,这是我的输出:

0x5650dc8dc174
1

第一个没问题,但第二个是1?这是怎么发生的?为了确保我没有弄乱任何东西,我用 C 编写了这段代码:

#include <stdio.h>

int foo() {
}

int main(void) {
printf("%p", &foo);
return 0;
}

输出如下:

0x55732bd426f0

按预期工作。我是否遗漏了 C++ 代码中的某些内容?或者这可能是因为内联 foo 函数(尽管它不应该是这样的)?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com