从函数引用数组

时间:2011-11-28 16:51:40

标签: c arrays function

我为时钟编写代码并且我正在创建一个函数来显示存储在数组时间中的时间[]

char time[]="23:59:45         ";
char display_time(char *t[], char *, char *, char *);

void main(void)             
{
            display_time(&time, &hr, &min, &sec);
            GLCD_GoTo(5,3);
            GLCD_WriteString(time, Font_System7x8);
}

这是我的功能

char display_time(char *t[], char *h, char *m, char *s)
{

                *t[0]=*h/10+48;
                *t[1]=*h%10+48;
                *t[3]=*m/10+48;
                *t[4]=*m%10+48;
                *t[6]=*s/10+48;
                *t[7]=*s%10+48;


}

一切都编译得很好,但我的时间没有得到更新,只显示了初始值。

2 个答案:

答案 0 :(得分:1)

  • 请编写警告(gcc -Wall -Wextra)
  • display_time应返回void
  • main应返回int并选择(int, char*[])(),但不是(void)
  • 您可以通过传递值(而不是指针)来提高可能性
  • 使用'0'代替48,再次使用lisibility
  • 你没有初始化hr。你的代码中的min和sec。
  • 你应该测试h是否在0到24之间等。
  • 你应该测试NULL指针
  • display_time没有“显示时间”,为函数写了一个更好的名字,你就完成了: - )

void display_time(char t[], int h, int m, int s) {
    t[0] = h / 10 + '0';
    t[1] = h % 10 + '0';
    t[3] = m / 10 + '0';
    t[4] = m % 10 + '0';
    t[6] = s / 10 + '0';
    t[7] = s % 10 + '0';
}

int main(int, char*[]) {
    char time[] = "23:59:45";
    int hr = 3, min = 9, sec = 42;
    display_time(time, hr, min, sec);
    GLCD_GoTo(5,3);
    GLCD_WriteString(time, Font_System7x8);
    return 0;
}

答案 1 :(得分:-1)

你的类型错了。您不应该发送char *t[],因为您没有传递指针数组。此外,您可能没有意识到,&timetime相同,没有“时间地址”。你想把char *传递给你的函数。