簡體   English   中英

指針操作? C ++

[英]Pointer Manipulation? C++

有人可以告訴我第2行在這里做什么嗎? 我檢查了一下是否只是將a的地址分配給b,但不是。

int a = 5, *b;
b = (int*) a;

閱讀有關類型轉換和指針的一些不錯的C ++編程書。

因此,在第二行中, a包含5。您正在使用(int*)a將其強制轉換為指針(指向int)。 這給出了一些包含地址5的(無效)指針。

在某些獨立的C ++運行時環境(可能是一些便宜的微控制器)上,地址5可能是有意義且合法的(但對於5來說,這不太可能)。 但通常不在托管的C ++環境中(例如,在Linux,Windows,MacOSX,Hurd等上編譯)

一旦取消引用該指針(例如,使用int c= *b; ),您將得到未定義的行為 ,通常會出現一些分段錯誤

您可能希望b = &a; technusm1所評論

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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