![](/img/trans.png)
[英]Does each variable in C/C++ point to a constant address in memory?
[英]How to print memory address of a defined constant in C++
碼:
#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: error: non-lvalue in unary
&'make [2]: * [build / Debug / Cygwin-Windows / main.o ]錯誤1 make [1]: [.build-conf]錯誤2使:* * [.build-impl]錯誤2
那么,為什么在這里看不到PI的內存地址?
謝謝。
宏永遠不會分配內存。 在編譯代碼之前,編譯器在文件中進行文本搜索,並將所有宏替換為其值。 這也是文本搜索,因此將替換文本。 因此,在編譯之前,PI在代碼中被3.14取代。 結果,內存運算符將引發錯誤,因為它不是變量,因此無法獲得3.14的值。 希望能幫助到你 :)
您不能使用數字文字的地址。 不過,您可以輸入一個變量:
// #define PI 3.14159
static const double PI = 3.14159;
在您的代碼中, PI
沒有內存地址。 由於它是一個預處理器宏,因此它的值在程序中出現PI
任何地方都會被替換。
如果將其轉換為變量,則可以使用其地址:
const double PI = 3.1415926;
預處理程序將在代碼中的任何地方用3.14159
替換PI
。 因此,該數字不駐留在內存中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.