[問題] 如何將int指標 指向struct的位置
遇到的問題: (題意請描述清楚)
如標題 現在我需要在一個int型態的指標裡
指向struct的記憶體位置
EX:
int *a struct k
內容 0x13 XXXX(不管他)
位置 0x55 0x13
希望得到的正確結果:
能成功指向struct的記憶體位置
有問題的code: (請善用置底文標色功能)
#include "stdio.h"
#include "stdlib.h"
struct ms
{int i;};
void main()
{
struct ms *pp = (struct ms*)malloc(sizeof(struct ms));
int *k = NULL;
k = &pp
}
程式跑出來的錯誤結果:
k = &pp
error C2440: '=' : 無法由 'ms **' 轉換為 'int *'
*k = (int)pp
中斷,並顯示"並未將物件參考設定為物件的執行個體"
k =(int)&pp
k =(int&)pp
error C2440: '=' : 無法由 'int' 轉換為 'int *'
k =&(int)pp
error C2102: '&' 需要左值 (l-value)
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
VS2005
檔案類型:Cpp
補充說明:
在舊版的C裡面 似乎可以直接回傳記憶體位置
或者是可以直接取得記憶體位置(無論宣告的type是否一樣)
也可以直接把memory address當int用
但現在似乎不行了 想請問一下
是否有其他的方法可以用
還是只能回去用比較老舊的編譯器??
只是這樣又會出現其他難解的問題了 Orz
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 115.43.52.14
※ 編輯: sosokill 來自: 115.43.52.14 (09/24 18:47)
→
09/24 18:51, , 1F
09/24 18:51, 1F
→
09/24 18:52, , 2F
09/24 18:52, 2F
→
09/24 18:53, , 3F
09/24 18:53, 3F
→
09/24 18:53, , 4F
09/24 18:53, 4F
→
09/24 18:54, , 5F
09/24 18:54, 5F
推
09/24 18:54, , 6F
09/24 18:54, 6F
→
09/24 18:54, , 7F
09/24 18:54, 7F
→
09/24 18:55, , 8F
09/24 18:55, 8F
→
09/24 18:55, , 9F
09/24 18:55, 9F
→
09/24 18:56, , 10F
09/24 18:56, 10F
如果直接用 int *k = (int*)pp;
則會出現 error C2100: 不合法的間接取值
推
09/24 18:57, , 11F
09/24 18:57, 11F
→
09/24 18:57, , 12F
09/24 18:57, 12F
感謝nowar100 可以了~
推
09/24 18:58, , 13F
09/24 18:58, 13F
→
09/24 18:58, , 14F
09/24 18:58, 14F
→
09/24 18:59, , 15F
09/24 18:59, 15F
→
09/24 19:00, , 16F
09/24 19:00, 16F
推
09/24 19:01, , 17F
09/24 19:01, 17F
至於我要做什麼呢~主要是要修改smpl的模擬程式
一開始也是用C去compiler
但是始終會有兩個error出現 (詳細請看我的上一篇文章)
之後有板友告訴我 換成C++的編譯器試試看
就沒問題了 所以現在才會用C++來compiler
如果又改回.C 那又會陷入之前的問題 囧>
※ 編輯: sosokill 來自: 115.43.52.14 (09/24 19:14)
→
09/24 19:16, , 18F
09/24 19:16, 18F
→
09/24 19:17, , 19F
09/24 19:17, 19F
→
09/24 19:18, , 20F
09/24 19:18, 20F
→
09/24 19:18, , 21F
09/24 19:18, 21F
該問題是出現在其他的檔案裡面
而不是出在我現在在修改的檔案 @.@
那個檔案有點類似lib 就只是一些funcction
那裡要修改的話 可能會需要改一大堆地方...
※ 編輯: sosokill 來自: 115.43.52.14 (09/24 19:23)
→
09/24 19:23, , 22F
09/24 19:23, 22F
→
09/24 19:23, , 23F
09/24 19:23, 23F
推
09/24 22:23, , 24F
09/24 22:23, 24F
→
09/25 00:49, , 25F
09/25 00:49, 25F
→
09/25 00:53, , 26F
09/25 00:53, 26F
→
09/25 00:57, , 27F
09/25 00:57, 27F
推
09/25 01:27, , 28F
09/25 01:27, 28F
→
09/25 10:45, , 29F
09/25 10:45, 29F
→
09/25 10:45, , 30F
09/25 10:45, 30F
→
09/25 10:48, , 31F
09/25 10:48, 31F