計算結構體成員偏移位址的一種方法

2021-06-21 03:10:03 字數 360 閱讀 3906

同事說起的 個人想了一下 還真沒什麼思路 後學習了一下 附**於下 很簡便的一種方式

int _tmain(int argc, _tchar* argv)

; mystruct *st = (mystruct *)0;

int address = (int)&(st->m_test);

printf("%lld\r\n",st);

return 0;

}

一直覺得自己對指標的認識已達高層,沒想到又顛覆了我之前對指標膚淺的認識。指標,可以告訴編譯器對所給記憶體的如何解析,只要不涉及去讀寫記憶體,就沒問題。。。。。

認識是無止境的,永遠不要固步自封

如何獲取結構體某成員的偏移位址

我們假設結構體定義如下所示 cpp view plain copy print?include include struct test s 思路1 非常簡單,直接用位址差值即可求得。cpp view plain copy print?intmain intargc,char argv 思路2 考慮巨...

結構體成員變數的偏移值

1 windows平台下有offsetof巨集可以求得結構體成員變數便宜,原始碼如下 define offsetof macro ifdef cplusplus ifdef win64 define offsetof s,m size t ptrdiff t reinterpret cast s 0...

巨集求結構體的偏移位址

cpp view plain copy 在c語言中,ansi c標準允許值為0的常量被強制轉換成任何一種型別的指標,而且轉換結果是乙個空指標,即null指標,因此對0取指標的操作 type 0 的結果就是乙個型別為type 的null指標。但是如果利用這個null指標來訪問type型別的成員當然是非...