簡體   English   中英

如何在C ++中打印已定義常量的內存地址

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM