找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1387|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

請問一下我這個C語言程序,這里的指針錯了嗎?怎么這樣?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:847202 發(fā)表于 2020-12-8 19:44 來自手機 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

#include<reg51.h>
sbit s1 = P3^2;
sbit s2 = P3^3;
void delay(unsigned int n)
{
        while(n--);
}
void yanshi(unsigned char a)
{
        unsigned char b;
        for(b = 0;b<a;b++)
        {
                TH0 =(65536 - 50000)/256;
                TL0 = (65536 - 50000)%256;
                TR0 = 1;
                while(!TF0);
                TF0 = 0;
        }
}
void zuo()
{
        unsigned char c = 0x01;
        unsigned char *h;
        unsigned char f;
        h = &c;
        for(f = 0;f<8;f++)
        {
                P1 = ~c;
                delay(20000);
                *c = *c<<1;
                if(c == 0)
                {
                        c = 0x01;
                }
        }
}
void you()
{
        unsigned char e = 0x80;
        unsigned char *p;
        unsigned char b;
        p = &e;
        for(b = 0;b<8;b++)
        {
                P1 = ~e;
                yanshi(4);
                *e = *e>>1;
                if(e ==0x00)
                {
                        e = 0x80;
                }
        }
}        
void main()
{
        TMOD = 0x01;
        EX0 = 1;
        IT0 = 1;
        PX0 = 1;
        EX1 = 1;
        IT1 = 0;
        EA = 1;
        
        while(1)
        {
                zuo();
        }
}
void zd()interrupt 0
{
        unsigned char j;
        j = P1;
        you();
        P1 = j;
}
void zhongduan() interrupt 2
{
        unsigned char j,i;
        j = P1;
        for( i = 0; i<3;i++)
        {  
                P1 = 0x00;
                yanshi(10);
                P1 = 0xff;
                yanshi(10);
        }
        while(!s2);
        P1 = j;
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:764088 發(fā)表于 2020-12-9 08:39 | 只看該作者
unsigned char c = 0x01;//c 是字符,不是指針
unsigned char *h; //h
h = &c; // h是指針,將字符 地址賦給指針是可以的
*c = *c<<1; //c 不是指針, 改為 :*h = (*h) << 1; 是可以的
回復(fù)

使用道具 舉報

板凳
ID:833190 發(fā)表于 2020-12-9 15:25 | 只看該作者
定義了指針h,但是后面沒有用到這程序也用不到指針,直接對變量c進行操作就行,把*c=*c<<1改成
c=c<<1。如果是想練一下指針,那就改成*h=*h<<1。
回復(fù)

使用道具 舉報

地板
ID:517466 發(fā)表于 2020-12-10 10:43 | 只看該作者
非指針變量,變量里面裝的是值
指針變量,里面裝的地址
uchar c=1 : 表示c這個單元里裝的是uchar數(shù)據(jù)。&c 表示獲得c這個單元所在的地址。
uchar *c  :表示c這個單元里裝是一個地址,這個地址里裝的是一個uchar數(shù)據(jù)。*c就是取得這個uchar數(shù)據(jù);而直接使用c,得到的是一個地址;
回復(fù)

使用道具 舉報

5#
ID:858214 發(fā)表于 2020-12-10 16:59 | 只看該作者
改成*h=*h<<1
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表