标题: 请问一下我这个C语言程序,这里的指针错了吗?怎么这样? [打印本页]

作者: 15348420767    时间: 2020-12-8 19:44
标题: 请问一下我这个C语言程序,这里的指针错了吗?怎么这样?

#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;
}

作者: MikeCai    时间: 2020-12-9 08:39
unsigned char c = 0x01;//c 是字符,不是指针
unsigned char *h; //h
h = &c; // h是指针,将字符 地址赋给指针是可以的
*c = *c<<1; //c 不是指针, 改为 :*h = (*h) << 1; 是可以的
作者: i_could_have    时间: 2020-12-9 15:25
定义了指针h,但是后面没有用到这程序也用不到指针,直接对变量c进行操作就行,把*c=*c<<1改成
c=c<<1。如果是想练一下指针,那就改成*h=*h<<1。
作者: suncat0504    时间: 2020-12-10 10:43
非指针变量,变量里面装的是值
指针变量,里面装的地址
uchar c=1 : 表示c这个单元里装的是uchar数据。&c 表示获得c这个单元所在的地址。
uchar *c  :表示c这个单元里装是一个地址,这个地址里装的是一个uchar数据。*c就是取得这个uchar数据;而直接使用c,得到的是一个地址;
作者: zhang442581807    时间: 2020-12-10 16:59
改成*h=*h<<1




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1