欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 指針變量問題 [打印本頁]

作者: 濤qq623942603    時間: 2022-8-11 10:10
標題: 指針變量問題
遇到一個指針變量問題,在keil C51下傳入指針后不會改變原始值,然而移植到IAR for AVR 就會改變原始值,是因為內核不一樣嗎?
下圖是C51的仿真測試,可以看出2次打印都是0xFFFF,原始值不變。



下圖是AVR的仿真測試,可以看出第1次打印是0xFFFF,第二次打印就是0x0000了。



AVR下經過了HC595_COM1_WR_NByte(2,(uint8_t *)&MyTime.Public_10ms);函數后,原始的值就改變了,C51和AVR的HC595_COM1_WR_NByte函數是一樣的,下圖就是函數原型。



作者: 濤qq623942603    時間: 2022-8-11 10:26
臥槽,沒仔細看,C51的我改過了,用了一個臨時變量,傳遞指針變量,所以C51的測試可以,打擾了。。。
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++;
        }
}
作者: 濤qq623942603    時間: 2022-8-11 10:26
這帖子可以結束了
作者: Hephaestus    時間: 2022-8-11 20:44
這個帖子并沒有結束,最關鍵的問題樓主還是沒有搞清楚。

在c語言里面,正常的做法是傳值,如果是傳指針,就是希望指針指向的值要被改變。

任何一本c語言教科書,關于函數都是從printf和scanf開始講的吧?這個兩個函數一個是傳值,一個是傳指針,為什么???
作者: 濤qq623942603    時間: 2022-8-13 08:51
Hephaestus 發表于 2022-8-11 20:44
這個帖子并沒有結束,最關鍵的問題樓主還是沒有搞清楚。

在c語言里面,正常的做法是傳值,如果是傳指針 ...

之所以傳入指針,是因為方便寫入多個數據,595級聯過去,一次要寫入幾個數據,傳值進去不太方便,傳指針進去,就是變量的地址,我在函數里面做了右移的操作,改變了原始的值,后面改成用一個臨時變量來操作右移




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1