|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
C中有5個(gè)變量,要求5個(gè)變量連續(xù)存放 |
| 作者:LXRLXR 欄目:單片機(jī) |
有5個(gè)變量,要求5個(gè)變量連續(xù)存放 有5個(gè)變量 unsigned CHAR x1; unsigned CHAR x2; unsigned int y1; unsigned CHAR y2; unsigned int z1; 1:要求5個(gè)變量連續(xù)存放 2:操作中需要把這5個(gè)變量整體移動(dòng) 3:在某些場(chǎng)合又需要單獨(dú)訪問(wèn) 4:在某些場(chǎng)合又需要用指針訪問(wèn) (如用p++或p--在5個(gè)變量中選擇) 本人定義了一個(gè)結(jié)構(gòu) struct { unsigned CHAR x1; unsigned CHAR x2; unsigned int y1; unsigned CHAR y2; unsigned int z1; }myram; 但好象無(wú)法達(dá)到以上4項(xiàng)要求。 再改成如下定義: union { struct { unsigned CHAR x1; unsigned CHAR x2; unsigned int y1; unsigned CHAR y2; unsigned int z1; }myram; }mymyram; 但還是無(wú)法達(dá)到以上4項(xiàng)要求 請(qǐng)問(wèn)各位工程師有何高見? |
| 2樓: | >>參與討論 |
| 作者: computer00 于 2005/6/14 12:18:00 發(fā)布:
整體移動(dòng)做不到。除非自己寫一個(gè)函數(shù)。 |
|
| 3樓: | >>參與討論 |
| 作者: airwill 于 2005/6/14 12:26:00 發(fā)布:
很簡(jiǎn)單啊 union { struct { unsigned CHAR x1; unsigned CHAR x2; unsigned int y1; unsigned CHAR y2; unsigned int z1; }myram; unsigned CHAR mystring[7]; }mymyram; struct myram 對(duì)變量操作;mystring 可以移動(dòng)了。 其實(shí)大多不需要這么復(fù)雜,光定義結(jié)構(gòu)就可以了;整塊移動(dòng)使用強(qiáng)制的指針完成 |
|
| 4樓: | >>參與討論 |
| 作者: computer00 于 2005/6/14 12:34:00 發(fā)布:
字符串似乎也不能整體移動(dòng)吧?如果也是一個(gè)個(gè)移動(dòng), 那還不如寫個(gè)函數(shù)(或者像可視畫編程中那樣,寫個(gè)方法),直接用指針訪問(wèn)就完事了。 |
|
| 5樓: | >>參與討論 |
| 作者: net_walker 于 2005/6/14 13:48:00 發(fā)布:
re 定義結(jié)構(gòu) typedef struct { unsigned CHAR x1; unsigned CHAR x2; unsigned int y1; unsigned CHAR y2; unsigned int z1; }myram; myram my_ram; unsigned CHAR *pData; unsigned CHAR string[7]; pData = &my_ram.x1; memcpy(string,pData,sizeof(my_ram));//整體移動(dòng) 利用指針對(duì)結(jié)構(gòu)內(nèi)數(shù)據(jù)進(jìn)行操作。 * - 本貼最后修改時(shí)間:2005-6-14 13:49:10 修改者:net_walker |
|
| 6樓: | >>參與討論 |
| 作者: meng730507 于 2005/6/14 14:19:00 發(fā)布:
沒(méi)搞錯(cuò)吧?? 你的幾個(gè)數(shù)據(jù),長(zhǎng)度不一致,怎么用指針呢? |
|
| 7樓: | >>參與討論 |
| 作者: zysunol 于 2005/6/14 14:53:00 發(fā)布:
sizeof |
|
| 8樓: | >>參與討論 |
| 作者: 雷風(fēng) 于 2005/6/14 15:18:00 發(fā)布:
這是個(gè)好辦法 |
|
| 9樓: | >>參與討論 |
| 作者: kernelxu 于 2005/6/14 17:23:00 發(fā)布:
在編譯器中設(shè)置兩字節(jié)對(duì)齊 #pragma pack(2) //2字節(jié)對(duì)齊,方便指針操作 #include //定義結(jié)構(gòu)體 typedef struct { unsigned CHAR x1; //1字節(jié)空閑 unsigned CHAR x2; //1字節(jié)空閑 unsigned int y1; unsigned CHAR y2; //1字節(jié)空閑 unsigned int z1; }myram; myram ram1, ram2; ... ram1 = ram2; //這樣可以整體搬動(dòng) |
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |