作者isohogon (憶秋風痕)
看板C_and_CPP
標題[問題] 結構與陣列能互相映射嗎?
時間Thu Oct 25 15:12:44 2012
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 我有一個結構
struct _Zone
{
char x;
char y;
char z;
}Zone1, Zone2;
有一個陣列
char Array[10];
其中
Array[5] = Zone1.x;
Array[7] = Zone1.y;
Array[3] = Zone1.z;
Array[1] = Zone2.x;
Array[9] = Zone2.y;
Array[6] = Zone2.z;
如上
陣列中有幾個值需要跟結構相等
我的問題是
由於這樣寫,
變成當我要改變Array[5]的值時要這樣寫
Zone1.x = 0xF;
Array[5] = Zone1.x;
當然也能直接把結構去掉,直接以Array[5] = 0xF結束
只是這樣程式會很不好view....
萬一是Zone1 ~ Zone10
一長串寫下來不是不行,總覺得應該有方法可以簡化
是否有寫法能讓
我在寫 Zone1.x時,同時Array[5]的值也會跟著變動
有想過記憶體映射的方式
只是不太得其門而入
想問問有沒有其他人有更好的意見?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.150.58
→ MOONRAKER:有。死心吧你。 10/25 15:19
→ MOONRAKER:你陣列裡面對應結構元素的空間根本不連續,這樣可以記憶 10/25 15:19
→ MOONRAKER:體映射,那我不就是周星馳。多寫幾行不會怎樣的。 10/25 15:20
→ isohogon:哈哈,現在遇到的問題是結構體太多啦~寫下去超多行的= = 10/25 15:23
→ isohogon:還是感謝提供意見 10/25 15:23
→ linotwo:前提是你要在 Array 的 scope 裡宣告 Zone1 Zone2 10/25 15:31
→ isohogon:原來還有這種寫法!! 太感謝了!! 10/25 15:33
→ MOONRAKER:這是struct的constructor。 10/25 15:35
→ EdisonX:疑!原 po 標題是 C ?? 10/25 15:36
→ james732:要改A同時改B的話就用指標吧... 10/25 15:43
→ MOONRAKER:其實寫個函數再用陣列對應不就結了。 10/25 16:02
→ isohogon:能詳述一下嗎? constructor這方式在VC可行,但是我現在 10/25 16:16
→ isohogon:用的IDE,他的編譯器不支援Orz 10/25 16:16
→ linotwo:你用的是哪種 IDE? 10/25 16:41
→ isohogon:TI的CCS 5,寫單晶片的 10/25 16:42
→ isohogon:因為是用eclisse做的,以為有建構子,看來只有C的編譯器 10/25 16:45
→ linotwo:C 版本 10/25 16:48
→ isohogon:剛搜尋後有找到類似方法,正在試的時候linotwo大就幫忙了 10/25 16:52
→ isohogon:非常感謝,也長知識了。我現在才知道結構也能用建構子 10/25 16:53
→ isohogon:以及在結構中用指標的方式,今天學習到不少阿 10/25 16:53