|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
各位C大蝦幫我看看這句話怎么不能調(diào)用?謝謝! |
| 作者:FZJ 欄目:單片機 |
unsigned CHAR s1,s2,s3,s4; void sjadd (a,b,c,d) unsigned CHAR a,b,c,d; { if (++a>9) { a=0; if (++b>5) { b=0; if (++c>9) { c=0; if (++d>9) { a=b=c=d=0; }}}} } void main () { sjadd (s1,s2,s3,s4); //a,b,c,d是形參,s1,s2,s3,s4是實參,想調(diào)用sjadd(....)函數(shù)來改變S1-S4的值,我這樣寫不知哪里錯了,請幫忙看看,謝謝了! } |
| 2樓: | >>參與討論 |
| 作者: yadog 于 2006/1/8 13:05:00 發(fā)布:
re 汗ing 整的全局變量太多 程序看著膩不舒服 |
|
| 3樓: | >>參與討論 |
| 作者: computer00 于 2006/1/8 13:21:00 發(fā)布:
這樣是按值傳遞,當然不能改變s1-s4了。 |
|
| 4樓: | >>參與討論 |
| 作者: lag3631 于 2006/1/8 13:34:00 發(fā)布:
c unsigned CHAR s1,s2,s3,s4; void sjadd (a,b,c,d) unsigned CHAR a,b,c,d; { if (++a>9) { a=0; if (++b>5) { b=0; if (++c>9) { c=0; if (++d>9) { a=b=c=d=0; }}}} } void main () { sjadd (s1,s2,s3,s4); scanf("%c,%c,%c,%c",&s1,&s2,&s3,&s4);\\沒有輸入怎么會有結果呢 printf("%c,%c,%c,%c",s1,s2,s3,s4);\\輸出 } |
|
| 5樓: | >>參與討論 |
| 作者: FZJ 于 2006/1/8 13:47:00 發(fā)布:
謝謝大家 我是寫單片機程序,想在程序中反復調(diào)用上面的函數(shù)來改變S1-S4和其他變量的值,不知道有沒有好的方法可以實現(xiàn),希望大家?guī)蛶兔Γx謝! 我也知道多用全局變量會會影響移植問題,但是我想不出如何進行函數(shù)的模塊化,所以才寫上面這段測試程序來請教大家。 |
|
| 6樓: | >>參與討論 |
| 作者: 李冬發(fā) 于 2006/1/8 13:58:00 發(fā)布:
老兄,你的C是什么版本的C和在環(huán)境里運行的?!要不誰能能答? |
|
| 7樓: | >>參與討論 |
| 作者: computer00 于 2006/1/8 14:02:00 發(fā)布:
使用指針。請看我在另一個帖的回復。 |
|
| 8樓: | >>參與討論 |
| 作者: FZJ 于 2006/1/8 14:41:00 發(fā)布:
電腦00麻煩您再去看看,謝謝! 我是寫PIC的編譯軟件是HI_TECH PICC8.05版本.謝謝! |
|
| 9樓: | >>參與討論 |
| 作者: javie 于 2006/1/8 14:44:00 發(fā)布:
不是值,而是要用指針來傳遞 |
|
| 10樓: | >>參與討論 |
| 作者: computer00 于 2006/1/8 14:45:00 發(fā)布:
re: http://bbs.21ic.com/club/bbs/list.asp?boardid=27&t=1943250&tp=%u6211%u90A3%u4E2A%u662F%u5F3A%u5236%u7C7B%u578B%u8F6C%u6362%u3002%u5728%u8FD9%u91CC%u53EF%u4EE5%u4E0D%u5199 |
|
| 11樓: | >>參與討論 |
| 作者: javie 于 2006/1/8 14:46:00 發(fā)布:
如此 這樣調(diào)用是通過值傳遞的。所以是不能改變s1-s4的值的 像你這樣,在調(diào)用時,只是將s1-s4的值傳遞給了函數(shù),在函數(shù)運行過程中,是不會修改這些變量的值的。 如果要改變他們的值,有兩種方法: 1.直接在函數(shù)里使用全局變量。 如: void sjadd(void) { s1=1; } 2.使用地址傳遞。即使用指針。 如: void sjadd(unsigned CHAR *a) { *a=1; } unsigned CHAR s1; void main(void) { sjadd((unsigned CHAR *)&s1); |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |