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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1687|回復: 9
收起左側

關于C51單片機編程中地址覆蓋的請教

[復制鏈接]
ID:607146 發表于 2019-9-9 22:51 | 顯示全部樓層 |閱讀模式
我一一段代碼如下

unsigned char *p;  //聲明一個指針變量
p="123";    //賦值123給這個指針上,假定地址為0x09CE,此時0x09CE被賦值了0x31,0x09CF為0x32
*p='9';      //我想把 0x09CE覆蓋為0x39
此時查看0x09CE還是0x31,并沒有被覆蓋,這是怎么回事。如果這種方式是錯的我應該怎么覆蓋這個地址上的值。謝謝

回復

使用道具 舉報

ID:478885 發表于 2019-9-10 07:56 | 顯示全部樓層

*p='9';  改為*p=39;0x09CE被覆蓋為0x39了
回復

使用道具 舉報

ID:94031 發表于 2019-9-10 08:32 | 顯示全部樓層
既然用c語言就不要糾結具體物理地址,如果對物理地址很在乎就用匯編好了,典型由匯編初轉c者心態。。
回復

使用道具 舉報

ID:607146 發表于 2019-9-10 09:27 | 顯示全部樓層
swzh 發表于 2019-9-10 07:56
*p='9';  改為*p=39;0x09CE被覆蓋為0x39了

試過了用*p=0x39也是不行的
回復

使用道具 舉報

ID:607146 發表于 2019-9-10 09:33 | 顯示全部樓層
xuyaqi 發表于 2019-9-10 08:32
既然用c語言就不要糾結具體物理地址,如果對物理地址很在乎就用匯編好了,典型由匯編初轉c者心態。。

剛開始學C51,是因為使用system.h的strcat函數拼接字符串,發現不能拼接。看了strcat實現方式

char* Strcat(char *dst, const char *src)
{
        assert(dst != NULL && src != NULL);
        char *temp = dst;
        while (*temp != '\0')
                temp++;
        while ((*temp++ = *src++) != '\0');

        return dst;
}

發現*temp++ = *src++這個執行了但并沒有真正的把*src賦值給*temp。所以才有的這個疑問。
回復

使用道具 舉報

ID:123289 發表于 2019-9-10 11:51 | 顯示全部樓層
0x09CE是RAM地址還是程序地址呢?
回復

使用道具 舉報

ID:15020 發表于 2019-9-10 13:09 | 顯示全部樓層
unsigned char *p;  //聲明一個指針變量
p="123";    //這句改的是p指向的地址
*p='9';      //這句改的是p所指地址的數據
兩句作用是不一樣的,p前的*號很重要
回復

使用道具 舉報

ID:607146 發表于 2019-9-10 14:17 | 顯示全部樓層
yzwzfyz 發表于 2019-9-10 11:51
0x09CE是RAM地址還是程序地址呢?

RAM地址
回復

使用道具 舉報

ID:607146 發表于 2019-9-10 14:18 | 顯示全部樓層
yutian_51hei 發表于 2019-9-10 13:09
unsigned char *p;  //聲明一個指針變量
p="123";    //這句改的是p指向的地址
*p='9';      //這句改的 ...

你好,我想實現先對地址賦一個值然后再用另一個值覆蓋的話應該怎么寫呢?
回復

使用道具 舉報

ID:610106 發表于 2019-9-10 17:04 | 顯示全部樓層
此時p指向的是只讀數據吧
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表