打印

另一个指针所指向的变量发生了改变

[复制链接]
794|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
supernan|  楼主 | 2020-7-4 19:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我定义了两个指针变量 其中一个指针所指向的变量改变后我作了一次无关指针的循环函数,但是我发现另一个指针所指向的变量发生了改变。

使用特权

评论回复
沙发
yufe| | 2020-7-4 19:41 | 只看该作者
循环体是否会真的影响指针所指向的变量

使用特权

评论回复
板凳
songqian17| | 2020-7-4 19:41 | 只看该作者
我也说一句fc改成fd试试

使用特权

评论回复
地板
supernan|  楼主 | 2020-7-4 19:45 | 只看该作者
如果是 那如何避免

使用特权

评论回复
5
happy_10| | 2020-7-4 19:47 | 只看该作者
循环函数看看

使用特权

评论回复
6
supernan|  楼主 | 2020-7-4 19:53 | 只看该作者
void bun()
{
   
    unsigned int w;
    RC6=1;
    PORTD=0X87;
    RC6=0;
    RC7=1;
    PORTD=0X8f;
    RC7=0;
    for(w=6272;w>0;w--)
    {
        PORTF=0XA0;
        delayus();
        PORTF=0XAA;
        delayus();
    }
}

使用特权

评论回复
7
zhanglli| | 2020-7-4 19:57 | 只看该作者
不是这里引起的

使用特权

评论回复
8
pengf| | 2020-7-4 20:00 | 只看该作者
很抱歉, 我可能学的是假的指针...

使用特权

评论回复
9
houcs| | 2020-7-4 20:04 | 只看该作者
unsigned int *p, 这样的才是指针吧?

使用特权

评论回复
10
supernan|  楼主 | 2020-7-4 20:09 | 只看该作者

unsigned char fx;
                TXREG2=0x0f;
                while(!TRMT2);
                sum_re=0;
                xor_re=0;
                add=ss[2];
                ref=3;
                bef=*p;
                def=*r;
                bbef=*pp;
                ddef=*rr;
                cef=*q;
                if(ss[0]==4)
                {
                    LPD();
                }
                for(fx=ss[0];fx>0;fx--)
                {
                    i=(unsigned char*)add;
                    *i=ss[ref];
                    ref++;
                    add++;
                }
                return;

使用特权

评论回复
11
supernan|  楼主 | 2020-7-4 20:12 | 只看该作者
这是主要部分 其实是串口接收到多个数据 以校验码结尾的通讯协议 我这里是成功接收后所进行处理的代码 可能比较乱所以开头没有放出来

使用特权

评论回复
12
supernan|  楼主 | 2020-7-4 20:15 | 只看该作者
void LPD()//远近
{
    if(ss[2]==0x28)
    {
        if(cef==0x20&&ss[3]==0x00)
        {
            sideinit();
        }
        if(cef==0x00&&ss[3]==0x20)
        {
            bun();
        }
    }
}

使用特权

评论回复
13
langgq| | 2020-7-4 20:18 | 只看该作者

你有什么打算呢?或者你想知道什么?

使用特权

评论回复
14
supernan|  楼主 | 2020-7-4 20:24 | 只看该作者
我是验证*q 然后发送6000多个脉冲(用for循环) 发送结束发现*p和*r发生了改变

使用特权

评论回复
15
supernan|  楼主 | 2020-7-4 20:26 | 只看该作者
所以想问下大家如何避免循环函数对指针的改变

使用特权

评论回复
16
dingy| | 2020-7-4 20:29 | 只看该作者
你这是高级程序员的做法啊..

使用特权

评论回复
17
pangb| | 2020-7-4 20:32 | 只看该作者
对单片机的开发而言, 资源非常有限, 只有1~2个间接寻址寄存器,指针用得过多, 反而可能不效率..

使用特权

评论回复
18
guoyt| | 2020-7-4 20:36 | 只看该作者
如果你用的芯片和调试器支持的话,你可以使用高级断点来在对特定ram有改变的时候停下来

使用特权

评论回复
19
xxrs| | 2020-7-4 20:43 | 只看该作者
嗯,这样可以帮你发现是谁干了坏事

使用特权

评论回复
20
zhuww| | 2020-7-4 20:46 | 只看该作者
有可能是数组越界了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

730

主题

10412

帖子

6

粉丝