打印
[C语言]

指针函数调用问题

[复制链接]
1042|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 声明时就不存在这个问题了

使用特权

评论回复
5
天风立马| | 2018-11-11 14:40 | 只看该作者
libre01 发表于 2018-11-11 14:29
感谢大哥的指教,刚刚将arry设置为static,问题解决了,然后自己debug下,发现使用arry 时,数据会被覆盖 ...


不客气。还要知其所以然。

使用特权

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

本版积分规则

28

主题

179

帖子

4

粉丝