变量定义出错,导致程序跑飞。请教下原因。

2020-01-23 14:23发布

unsigned char dis[6];
void send_printf(int value)
{
        unsigned char i;
        printf(dis , value);
        for(i=0;i<6;i++)
        {
                SendData(dis[i]);
        }
}
为了省事,直接在函数的上面把变量定义了。printf(dis , value);  dis传递的是指针变量,就是数组的地址。
但是在调试的时候,发现程序运行,老是出问题。于是 unsigned char dis[6];放到程序的开头就好了。
呵呵,问题是找到了,但是具体的原因还不是很清楚,所以想问问大家。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
dellric
1楼-- · 2020-01-25 05:07
 精彩回答 2  元偷偷看……
dellric
2楼-- · 2020-01-25 06:45
dis[6]没有被初始化,放到最开头的时候,c程序在初始化全局变量的时候,已经帮你设置为0结尾的ASCII字符串,这个串是个空串,因为第一个字符就是0,如果没有初始化,程序会一直找0,直到碰到不该碰到的东西,就死机或重启了。
煮酒fu
3楼-- · 2020-01-25 09:11
dellric 发表于 2014-8-13 11:00
今天没有喝脉动,状态不佳,打开网页就看到,“变量定义出错,导弹程序跑飞”,吓了一跳。 ...

你看准了吗,大哥。我写导弹了吗。
gshuang1
4楼-- · 2020-01-25 14:04
定义局部变量就跑飞,全局就没问题,可以试试定义局部变量,在前面加个static,如果不会跑飞,可以确定是栈不够。你的printf函数或SendData占用太多资源,另外,自己定义的函数不要和公共函数名一致,如printf,不检点行为迟早会出事的。

一周热门 更多>