代码:
#include <cstdlib>
#include <iostream>
#define PI 3.14159
using namespace std;
int main(int argc, char** argv) {
cout<<"Address of PI:"<<&PI<<endl;
return 0;
}
这是输出:
main.cpp: 在函数 int main(int, char**)' 中:
main.cpp:20: 错误:一元中的非左值
&'
make[2]: * [build/Debug/Cygwin-Windows/main.o] 错误 1
make[1]: [.build-conf] 错误 2
make: ** [.build-impl] 错误 2
那为什么我这里看不到PI的内存地址呢?
谢谢。
最佳答案
宏永远不会分配内存。在编译代码之前,编译器在文件中进行文本搜索,并用它们的值替换所有宏。这也是一个文本搜索,因此文本会被替换。因此在编译之前,PI 在您的代码中被替换为 3.14。结果,内存运算符抛出错误,因为它无法获取 3.14 的值,因为它不是变量。希望对您有所帮助:)
关于c++ - 如何在 C++ 中打印已定义常量的内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13535613/