/// @file exam_test.c
/** @brief
*/#include #include int main()
; int iobjaddr = 0x00401234; ///< 設目標位址為 0x00401234
int iobjcontent = 0;
int n = 0; ///< 偏移到目標位址的陣列下標
/// ary[0] + sizeof(int) * n = iobjaddr; ///< 初始公式
/// sizeof(int) * n = iobjaddr - (int)ary; ///< 推導1
/// 推導完成,可以知道偏移到目標位址的陣列下標
n = (iobjaddr - (int)ary) / sizeof(int); ///< 可得 n = 0x000b44ae
iobjcontent = ary[n]; ///< ary[n] 即為 0x00401234 的位址內容
/// iobjcontent is 0x429c840d, 在memory視窗看到內容為 0x429c840d
/// 用陣列取指定記憶體位址內容的任務完成
return 0;
}
用gdb如何檢視指定位址的記憶體內容?
格式 x nfu 說明x 是 examine 的縮寫 n表示要顯示的記憶體單元的個數 f表示顯示方式,可取如下值 x 按十六進製制格式顯示變數。d 按十進位制格式顯示變數。u 按十進位制格式顯示無符號整型。o 按八進位制格式顯示變數。t 按二進位制格式顯示變數。a 按十六進製制格式顯示變數。i 指令...
取多維陣列首位址的方法
include include int main void char a 1 1 char a 2 2 3 對一維陣列取首位址,有兩種方法 char pa a 第一種 char pa a 0 第二種 char pa a 0 0 取二維陣列首位址的方法 char pa a 0 0 0 取三維陣列首位址...
陣列名取位址的含義
1 變數名在編譯階段被編譯器替換成儲存該變數值的記憶體空間的首位址,簡單說 變數名代表儲存該變數的記憶體空間首位址。例如 定義乙個int型變數 int a 10 int型變數的用4個連續的位元組儲存,變數名a代表第乙個位元組的位址。double b 12.1 double型變數用8個連續的位元組儲存...