[爆卦]c結構陣列是什麼?優點缺點精華區懶人包

為什麼這篇c結構陣列鄉民發文收入到精華區:因為在c結構陣列這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者isohogon (憶秋風痕)看板C_and_CPP標題[問題] 結構與陣列能互相映射嗎?時間T...


開發平台(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:http://codepad.org/7dP2tGxz 10/25 15:30
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:http://codepad.org/cNT9f8Bb 10/25 16:47
linotwo:C 版本 10/25 16:48
isohogon:剛搜尋後有找到類似方法,正在試的時候linotwo大就幫忙了 10/25 16:52
isohogon:非常感謝,也長知識了。我現在才知道結構也能用建構子 10/25 16:53
isohogon:以及在結構中用指標的方式,今天學習到不少阿 10/25 16:53

你可能也想看看

搜尋相關網站