熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2022-8-11 10:10
正文摘要:遇到一個(gè)指針變量問(wèn)題,在keil C51下傳入指針后不會(huì)改變?cè)贾担欢浦驳絀AR for AVR 就會(huì)改變?cè)贾担且驗(yàn)閮?nèi)核不一樣嗎? 下圖是C51的仿真測(cè)試,可以看出2次打印都是0xFFFF,原始值不變。 |
Hephaestus 發(fā)表于 2022-8-11 20:44 之所以傳入指針,是因?yàn)榉奖銓?xiě)入多個(gè)數(shù)據(jù),595級(jí)聯(lián)過(guò)去,一次要寫(xiě)入幾個(gè)數(shù)據(jù),傳值進(jìn)去不太方便,傳指針進(jìn)去,就是變量的地址,我在函數(shù)里面做了右移的操作,改變了原始的值,后面改成用一個(gè)臨時(shí)變量來(lái)操作右移 |
|
這個(gè)帖子并沒(méi)有結(jié)束,最關(guān)鍵的問(wèn)題樓主還是沒(méi)有搞清楚。 在c語(yǔ)言里面,正常的做法是傳值,如果是傳指針,就是希望指針指向的值要被改變。 任何一本c語(yǔ)言教科書(shū),關(guān)于函數(shù)都是從printf和scanf開(kāi)始講的吧?這個(gè)兩個(gè)函數(shù)一個(gè)是傳值,一個(gè)是傳指針,為什么??? |
| 這帖子可以結(jié)束了 |
|
臥槽,沒(méi)仔細(xì)看,C51的我改過(guò)了,用了一個(gè)臨時(shí)變量,傳遞指針變量,所以C51的測(cè)試可以,打擾了。。。 void HC595_COM1_WR_NByte(uint8_t Len, uint8_t *GPIOValue) { uint8_t i=0,Byte=0; while(Len--) { Byte=*GPIOValue; HC595_COM1_STCP_RESET(); for(i=0;i<8;i++) { HC595_COM1_SHCP_RESET(); if(Byte & 0x80) { HC595_COM1_DS_SET(); } else { HC595_COM1_DS_RESET(); } HC595_COM1_SHCP_SET(); Byte <<= 1; } HC595_COM1_STCP_SET(); GPIOValue++; } } |
Powered by 單片機(jī)教程網(wǎng)