音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

C語言賦值

作者:zmmhmily 欄目:技術(shù)交流
C語言賦值
初學(xué)單片機(jī)C語言,假如我定義 unsigned CHAR address;address中放入地址
0x80,那么我往從這個地址開始的連續(xù)10個地址中送值應(yīng)該用什么語句,謝謝.

2樓: >>參與討論
computer00
使用指針
unsigned CHAR address;

((unsigned CHAR *)(&address))[0]=      //偏移0,即address本身
((unsigned CHAR *)(&address))[1]=      //偏移1,即address接下來的一個字節(jié)

3樓: >>參與討論
computer00
其實(shí)樓主還不如干脆聲明成一個數(shù)組算了,
unsigned CHAR address[10];

address[0]=
address[1]=


4樓: >>參與討論
赤鑄
if(要絕對定位&&是C51)用_at_關(guān)鍵字
CHAR idata array[10] _at_ 0x10;

5樓: >>參與討論
computer00
如果樓主所說的是從地址0x80開始,那么直接用指針也行
((unsigned CHAR idata *)0x80)[0]=      //偏移0,即地址在0x80
((unsigned CHAR idata *)0x80)[1]=      //偏移0,即地址在0x81




6樓: >>參與討論
melearn
請教赤鑄大蝦
_at_關(guān)鍵字在c語言書上有嗎,我沒見過啊,沒有的話在什么書上有啊

7樓: >>參與討論
赤鑄
這是C51擴(kuò)展的,非標(biāo)準(zhǔn)關(guān)鍵字
也可以用宏定義,C51的ABSACC.H里有,可以直接用

#define CBYTE ((unsigned CHAR volatile code  *) 0)
#define DBYTE ((unsigned CHAR volatile data  *) 0)
#define PBYTE ((unsigned CHAR volatile pdata *) 0)
#define XBYTE ((unsigned CHAR volatile xdata *) 0)

#define CWORD ((unsigned int volatile code  *) 0)
#define DWORD ((unsigned int volatile data  *) 0)
#define PWORD ((unsigned int volatile pdata *) 0)
#define XWORD ((unsigned int volatile xdata *) 0)


8樓: >>參與討論
computer00
keil C的用戶手冊里有。
 
9樓: >>參與討論
awey
圈圈的這段好費(fèi)解 ?
unsigned CHAR address;

((unsigned CHAR *)(&address))[0]=      //偏移0,即address本身
((unsigned CHAR *)(&address))[1]=      //偏移1,即address接下來的一個字節(jié)

10樓: >>參與討論
computer00
這哪里有費(fèi)解的?
 
11樓: >>參與討論
楊工
為什么不直接用指針?
unsigned CHAR array[10];  //定義數(shù)組,c語言中不提倡變量用絕對地址
                          //如果有必要用絕對地址,聽赤鑄的
unsigned CHAR *p;  //定義1個指向unsigned CHAR的指針

p=array;  //p賦值,數(shù)組名就是指針
p=&array[0];  //也可以這樣
*p=??;  //p指向的單元賦值
p++;  //指針+1,指向下一個單元
*p++=??  //也可以把以上兩句合為1句


//

12樓: >>參與討論
computer00
我暈……樓上的你這不是在浪費(fèi)空間和時間嗎?
都有unsigned CHAR array[10]; 了,你還搞個指針出來?

直接array[n]=??;不是很悠閑?

13樓: >>參與討論
赤鑄
指針便于循環(huán),固定的當(dāng)然可以不用
 
14樓: >>參與討論
赤鑄
不過有時用指針效率更高
無論空間效率還是時間效率,因?yàn)橹羔樧兞靠赡鼙粌?yōu)化為寄存器,這要看具體代碼和編譯器的優(yōu)化了

15樓: >>參與討論
zmmhmily
偶去試試,多謝各位
 
16樓: >>參與討論
waha
各位耐心真好.
 
17樓: >>參與討論
一個初學(xué)者
學(xué)習(xí)中。感謝各位大蝦。
 
18樓: >>參與討論
lag3631
c
用指針比較好
unsigned CHAR *p=&address;
p++;

19樓: >>參與討論
xzhenggen
圈圈這段很有技巧.

unsigned CHAR address;

((unsigned CHAR *)(&address))[0]=      //偏移0,即address本身
((unsigned CHAR *)(&address))[1]=      //偏移1,即address接下來的一個字節(jié)




20樓: >>參與討論
進(jìn)程
總結(jié)一下
最方便的用法是數(shù)組:unsigned CHAR address[10];
要想用循環(huán)作用,可考慮加上指針:unsigned CHAR *p;
                              p=address;
指針的作用要隨編譯器的不同而不同,總之,用上比不用好!

21樓: >>參與討論
12分
computer00的語句可以編譯通過,但是編譯器會取消該變量的
為什么用比不用好?愿聽其詳!!

22樓: >>參與討論
computer00
編譯器會取消該變量,是什么意思?
如果編譯器會把改語句優(yōu)化掉,那就加上volatile關(guān)鍵詞來修飾。不過我在keil里面用,都沒被優(yōu)化掉過。

23樓: >>參與討論
remex2005
圈圈的提法也有些問題
unsigned CHAR address;

((unsigned CHAR *)(&address))[0]=      //偏移0,即address本身
((unsigned CHAR *)(&address))[1]=      //偏移1,即address接下來的一個字節(jié)

address只申請了一個字節(jié)的內(nèi)存空間,而((unsigned CHAR *)(&address))[1]= 進(jìn)行賦值操作的話會改寫address所分配的空間的下一個字節(jié)的內(nèi)容,而該字節(jié)有可能由編譯器已經(jīng)分配給別的變量。這就會出現(xiàn)最頭疼的難查的問題,即有內(nèi)存被改寫。上面提問題的摟主,本身提的問題就有問題,所以大家回答起來也就比較難了,呵呵。
看了上面各位大蝦的回復(fù),感覺大部分都是硬件科班出生,對c語言本質(zhì)上的某些東西還沒有理解透徹。個人觀點(diǎn),如有得罪壇子里的大蝦還請拍磚。

24樓: >>參與討論
農(nóng)民講習(xí)所
哪里這么寫,不是在找BUG嗎?
unsigned CHAR address;

((unsigned CHAR *)(&address))[0]=      //偏移0,即address本身
((unsigned CHAR *)(&address))[1]=      //偏移1,即address接下來的一個字節(jié)
這種代碼是絕對禁止的。通常說的野指針、跑飛什么的,都這樣做出來的。

25樓: >>參與討論
computer00
這是樓主要求的功能。請仔細(xì)看樓主的要求。
我不是叫他去改成數(shù)組嗎?




26樓: >>參與討論
赤鑄
再看樓主的提法
意思好像是要用變量尋址,這樣應(yīng)該用指針變量,而不是用個字節(jié)變量

TYPE idata * pointer = (TYPE idata *) 0x10;



27樓: >>參與討論
computer00
再看了看樓主的要求,
C語言賦值

初學(xué)單片機(jī)C語言,假如我定義 unsigned CHAR address;address中放入地址
0x80,那么我往從這個地址開始的連續(xù)10個地址中送值應(yīng)該用什么語句,謝謝.


似乎他的要求是把地址放入到address中,然后再從這個地址(是不是指0x80?)開始往里面送值?

那干脆聲明一個指針叫做address,

unsigned CHAR idata * address;
unsigned CHAR i;

address=(unsigned CHAR idata *)(0x80);

for(i=0;i<10;i++)
{
   address[i]=??;
}

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請教:邊緣觸發(fā)與電平觸發(fā)有什么區(qū)別?是速度差別嗎?
RS485半雙工,接9芯頭的接線標(biāo)準(zhǔn)是什么呀?
問個電腦相關(guān)問題
大家?guī)臀铱纯催@個射頻電路
石英晶體振蕩器
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號