Re: [問題] 關於Class指標的觀念
看板C_and_CPP (C/C++)作者LPH66 (f0VMRgEBA)時間11年前 (2013/08/23 16:18)推噓14(14推 0噓 152→)留言166則, 15人參與討論串2/19 (看更多)
※ 引述《wope (獨立黑色色彩)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: GCC4.7.2 MinGW64
: 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
: NO
: 問題(Question):
: 想請問"寫法1"與"寫法2"的差別是什麼
: 寫法1: MF2KGMG_operator* GMG_ptr=(MF2KGMG_operator*) GMGID;
: 寫法2: MF2KGMG_operator* GMG_ptr=(MF2KGMG_operator*)*GMGID;
: 這是Modflow 的原始碼
: 下載時他的程式為"寫法2"
: 但會出現waning:
: cast from pointer to integer of different size [-Wpointer-to-int-cast]
: 但
: 我改成"寫法1"時waning不見了
: 可是我不懂語法上的義意
: 問題如下
: (1)想請版上的高手這樣改裡面的值會不會一樣?
: (2)語法上的義意差在哪裡?
: __
: 其中
: GMGID與MF2KGMG_operator定義如下
: int* GMGID
: typedef struct MF2KGMG_operator
: {
: r_data rd; /* Vector Data */
: r_vector r; /* Residual */
: r_vector z; /* Head-Change */
: GEN_operator CCFD; /* Cell-Centered Finite Difference Matrix */
: GEN_operator CCFDMG; /* Multilevel CCFD Operator */
: GEN_operator PCG; /* Preconditioned Conjugate Gradient */
: double w; /* Relaxation Parameter */
: CCFD_operator *CCFD_ptr; /* Pointer to access CCFD operator */
: }MF2KGMG_operator;
: MF2KGMG_operator* GMG_ptr=(MF2KGMG_operator*)*GMGID;
: MF2KGMG_operator* GMG_ptr=(MF2KGMG_operator*) GMGID;
我去找到了似乎是你的程式的來源
這裡的使用情境看起來 GMGID 所指向的 int 是個類似 HANDLE 之類的存在
那個 int 其實是一個 MF2KGMG_operator *
可以參看 MF2KGMG_ALLOCATE 的最後 就在你問的程式的上面幾行 (#153)
*GMGID = (int)GMG_ptr;
所在做的就是這麼回事 MF2KGMG_ALLOCATE 的 GMGID 是個 "call by address"
#153 就是在把做出來的東西給"回傳"回去
你問的 MF2KGMG_FREE 的這個 GMGID 其實也是一樣
所以函式裡必須要先 dereference 才能得到實際的 HANDLE
因此寫法 2 才是正確的
寫法 1 會把那個指向 HANDLE 的指標解釋成 MF2KGMG_operator 的指標 這是錯誤的
如果要消掉這個 warning 的話
照理說中間多轉一層 (intptr_t) 就可以了
不過這支程式這麼做的地方還不少
所以...我覺得放著也沒差就是了
--
LPH [acronym]
= Let Program Heal us
-- New Uncyclopedian Dictionary, Minmei Publishing Co.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.69.49.38
推
08/23 17:26, , 1F
08/23 17:26, 1F
→
08/23 21:27, , 2F
08/23 21:27, 2F
→
08/23 21:28, , 3F
08/23 21:28, 3F
→
08/23 21:30, , 4F
08/23 21:30, 4F
→
08/23 21:33, , 5F
08/23 21:33, 5F
→
08/23 21:38, , 6F
08/23 21:38, 6F
→
08/24 14:48, , 7F
08/24 14:48, 7F
推
08/24 14:57, , 8F
08/24 14:57, 8F
→
08/24 21:25, , 9F
08/24 21:25, 9F
→
08/24 21:26, , 10F
08/24 21:26, 10F
→
08/24 21:28, , 11F
08/24 21:28, 11F
推
08/24 22:40, , 12F
08/24 22:40, 12F
→
08/24 22:41, , 13F
08/24 22:41, 13F
→
08/24 22:49, , 14F
08/24 22:49, 14F
→
08/24 23:38, , 15F
08/24 23:38, 15F
→
08/24 23:39, , 16F
08/24 23:39, 16F
→
08/24 23:40, , 17F
08/24 23:40, 17F
→
08/24 23:40, , 18F
08/24 23:40, 18F
→
08/24 23:41, , 19F
08/24 23:41, 19F
→
08/24 23:41, , 20F
08/24 23:41, 20F
→
08/24 23:42, , 21F
08/24 23:42, 21F
→
08/24 23:42, , 22F
08/24 23:42, 22F
→
08/24 23:44, , 23F
08/24 23:44, 23F
→
08/24 23:45, , 24F
08/24 23:45, 24F
→
08/24 23:45, , 25F
08/24 23:45, 25F
推
08/24 23:45, , 26F
08/24 23:45, 26F
→
08/24 23:46, , 27F
08/24 23:46, 27F
→
08/24 23:47, , 28F
08/24 23:47, 28F
→
08/24 23:48, , 29F
08/24 23:48, 29F
→
08/24 23:49, , 30F
08/24 23:49, 30F
→
08/24 23:50, , 31F
08/24 23:50, 31F
→
08/24 23:54, , 32F
08/24 23:54, 32F
→
08/24 23:55, , 33F
08/24 23:55, 33F
→
08/24 23:55, , 34F
08/24 23:55, 34F
→
08/24 23:58, , 35F
08/24 23:58, 35F
→
08/25 00:01, , 36F
08/25 00:01, 36F
推
08/25 00:03, , 37F
08/25 00:03, 37F
→
08/25 00:04, , 38F
08/25 00:04, 38F
→
08/25 00:09, , 39F
08/25 00:09, 39F
還有 87 則推文
→
08/26 22:46, , 127F
08/26 22:46, 127F
→
08/26 23:13, , 128F
08/26 23:13, 128F
→
08/26 23:15, , 129F
08/26 23:15, 129F
→
08/26 23:34, , 130F
08/26 23:34, 130F
→
08/26 23:39, , 131F
08/26 23:39, 131F
→
08/26 23:40, , 132F
08/26 23:40, 132F
→
08/26 23:41, , 133F
08/26 23:41, 133F
→
08/26 23:43, , 134F
08/26 23:43, 134F
→
08/26 23:46, , 135F
08/26 23:46, 135F
→
08/26 23:48, , 136F
08/26 23:48, 136F
→
08/26 23:50, , 137F
08/26 23:50, 137F
→
08/26 23:53, , 138F
08/26 23:53, 138F
→
08/26 23:53, , 139F
08/26 23:53, 139F
→
08/26 23:54, , 140F
08/26 23:54, 140F
→
08/26 23:54, , 141F
08/26 23:54, 141F
→
08/26 23:55, , 142F
08/26 23:55, 142F
→
08/26 23:55, , 143F
08/26 23:55, 143F
→
08/26 23:55, , 144F
08/26 23:55, 144F
→
08/26 23:56, , 145F
08/26 23:56, 145F
→
08/26 23:56, , 146F
08/26 23:56, 146F
→
08/26 23:56, , 147F
08/26 23:56, 147F
→
08/26 23:57, , 148F
08/26 23:57, 148F
→
08/27 00:01, , 149F
08/27 00:01, 149F
→
08/27 00:01, , 150F
08/27 00:01, 150F
→
08/27 00:03, , 151F
08/27 00:03, 151F
→
08/27 00:06, , 152F
08/27 00:06, 152F
→
08/27 00:08, , 153F
08/27 00:08, 153F
→
08/27 00:09, , 154F
08/27 00:09, 154F
→
08/27 00:11, , 155F
08/27 00:11, 155F
→
08/27 00:12, , 156F
08/27 00:12, 156F
→
08/27 00:13, , 157F
08/27 00:13, 157F
→
08/27 00:13, , 158F
08/27 00:13, 158F
→
08/27 00:13, , 159F
08/27 00:13, 159F
→
08/27 00:13, , 160F
08/27 00:13, 160F
→
08/27 00:15, , 161F
08/27 00:15, 161F
→
08/27 00:18, , 162F
08/27 00:18, 162F
→
08/27 00:18, , 163F
08/27 00:18, 163F
→
08/27 00:21, , 164F
08/27 00:21, 164F
→
08/27 00:21, , 165F
08/27 00:21, 165F
→
08/27 23:06, , 166F
08/27 23:06, 166F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章