[C语言] 指针函数调用问题

[复制链接]
1298|4
 楼主| libre01 发表于 2018-11-11 10:59 | 显示全部楼层 |阅读模式
函数1:unsigned char *a(unsigned char number)
                {
                        unchar arry[4];
                        arry[0]=number+3;
                        arry[1]=number+2;
                        arry[2]=number+1;
                        arry[3]='\0';
                        p=arry;
                        return p;
                 }
函数2:void lcd_display(unsigned char h,unsigned char w,unsigned char *q)
           {
                       while(*q!='\0')
                       {
                        ....................
                       }
           }
主函数:lcd_display(0,0,a(12));   

如上调用时,keil 没有警告和错误,但是不会进入到函数2的while()循环中去的,但是在函数1中直接给p赋值:p="123",while()循环可以进入,难道将数组arry不能直接赋给指针p?

还望大神门能够指点迷津
天风立马 发表于 2018-11-11 13:52 来自手机 | 显示全部楼层
本帖最后由 天风立马 于 2018-11-11 13:57 编辑

函数1退出后,p指向的内容是不确定的,看看stack相关的资料。
p=“123”可以用是因为“123”的储存位置与函数1中的arry不同,看看字符常量的储存相关资料。
你还可以把arry定义为static或者拿到函数1外部,看看运行结果,再结合上面两句话,自己查查资料,琢磨琢磨。
天风立马 发表于 2018-11-11 13:59 来自手机 | 显示全部楼层
另外提醒一下,指针函数?这是个啥?
 楼主| libre01 发表于 2018-11-11 14:29 | 显示全部楼层
天风立马 发表于 2018-11-11 13:59
另外提醒一下,指针函数?这是个啥?

感谢大哥的指教,刚刚将arry设置为static,问题解决了,然后自己debug下,发现使用arry 时,数据会被覆盖掉,当使用static 声明时就不存在这个问题了
天风立马 发表于 2018-11-11 14:40 来自手机 | 显示全部楼层
libre01 发表于 2018-11-11 14:29
感谢大哥的指教,刚刚将arry设置为static,问题解决了,然后自己debug下,发现使用arry 时,数据会被覆盖 ...


不客气。还要知其所以然。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

179

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部