标题: 单片机新手对C语言编程的程序不太清楚,求赐教! [打印本页]

作者: 啦啦啦小包子    时间: 2022-2-22 11:05
标题: 单片机新手对C语言编程的程序不太清楚,求赐教!
void write_string(uchar hang,uchar add,uchar *p)
{
        if(hang==1)   
                write_com(0x80+add);
        else
                write_com(0x80+0x40+add);
                while(1)                                                                                                                 
                {
                        if(*p == '\0')  break;
                        write_data(*p);
                        p++;
                        delay_uint(50);
                }        
}
这是51电子密码锁让lcd1602显示字符函数的代码,其中的while(1)括号后面这些是什么意思,加上了有什么作用吗?求大神赐教!!!


作者: 兴安xa    时间: 2022-2-22 14:24
循环语句,表示循环运行括号内的程序
作者: lhzw2001    时间: 2022-2-22 14:31
while(1){}  表示一直循环执行{}里面的语句,碰到字符串结束符后,自动终止循环。
作者: 13205495918    时间: 2022-2-22 14:33
这是输入字符串,字符串是以结束符'\0'作为结尾,你看你字符指针p加一,就是字符串当前字符往后移一个,当你碰到结束符的时候,这个字符串就是结束了,所以会执行if下面的第一个分号前的语句,也就是break,(这里建议你按照编程规范,不管if(条件表达式)。。。。这个if要执行几句,就算是一句,也最好加上花括号)
作者: 风之痕于梦想    时间: 2022-2-22 15:34
一直执行,成立就退出
作者: 188610329    时间: 2022-2-22 19:53
死读书的写法:
               while(1)                                                                                                                 
                {
                        if(*p == '\0')  break;
                        write_data(*p);
                        p++;
                        delay_uint(50);
                }        
通过理解后用自己的思想写的话:
               while(*p != '\0')                                                                                                                 
                {
                        write_data(*p);
                        p++;
                        delay_uint(50);
                }        

作者: fj51hei    时间: 2022-2-22 20:54
188610329 发表于 2022-2-22 19:53
死读书的写法:
               while(1)                                                              ...

这个有区别?
作者: 188610329    时间: 2022-2-22 22:45
fj51hei 发表于 2022-2-22 20:54
这个有区别?

一个是绝对循环+条件跳出
一个是只有条件循环

你说有没有区别?
作者: mimidog111    时间: 2022-2-23 10:20
while(1);停止
作者: dcg    时间: 2022-2-26 16:32
'\0'是字符串结尾,循环输出,一直到字符串结尾结束循环
作者: dzj4321    时间: 2022-2-28 08:36
188610329 发表于 2022-2-22 19:53
死读书的写法:
               while(1)                                                              ...

只执行一次就退出了?
作者: 1842559923    时间: 2022-3-1 10:40
就是如果读取到回车就会退出




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