我正在编写一个函数,以从两个包含小时和分钟的全局 int 输出 24 小时格式的基本小时和分钟字符串。
我在初始化期间定义了这些:
int g_alarmHours = 7;
int g_alarmMinutes = 0;
返回字符串的函数是:
char* getAlarmTime() {
int hours = g_alarmHours;
int minutes = g_alarmMinutes;
char t[6];
t[0] = (hours/10) + '0';
t[1] = (hours%10) + '0';
t[2] = ':';
t[3] = (minutes/10) + '0';
t[4] = (minutes%10) + '0';
t[5] = 0;
return t;
}
全局变量是在添加到另一个设备的串行通信时要替换的存根,这些值将从中检索。
调用该函数会在字符指针处生成以下十六进制值:
0x20 0x4b 0x00
当我用getAlarmTime()
以下内容替换函数的前两行时
int hours = 7;
int minutes = 0;
输出就是我所期望的:
07:00\0
为什么使用这些全局变量会导致输出getAlarmTime()
如此不稳定?