我不能从函数返回一个数组吗? C

时间:2014-12-24 02:51:42

标签: c arrays pointers return

我试图从函数返回一个数组,并且在函数中有一个指针,但是当我尝试返回数组时,它只返回第一个元素! :S

这是我的代码:

int* getDate() {
    time_t t = time(NULL);
    struct tm tm = *localtime(&t);

    int i;
    static int date[7];//i save in each position the year, month, day, h, m and s

    date[0] = tm.tm_year + 1900;
    date[1] = tm.tm_mon + 1;
    date[2] = tm.tm_mday;
    date[3] = tm.tm_hour;
    date[4] = tm.tm_min;
    date[5] = tm.tm_sec;

    return date;    
}

int main(){
    int *p;
    int i;
    p = getDate();

    for (i = 0; i<6; i++){
        printf("%d/", *p);
    }

    return 0;
}

期望的输出:2014/12/24/3/44/12(年/月/日/小时/分/秒)

当前输出:2014/2014/2014/2014/2014/2014

3 个答案:

答案 0 :(得分:2)

进行此更改。

for (i = 0; i<6; i++){
    printf("%d/", p[i]);

您已经重新调整了指向数组的指针,指针可以在很多方面像数组一样使用。

答案 1 :(得分:1)

在main

中的for循环中使用*(p+i)

答案 2 :(得分:-1)

问题不在于print语句的返回值。数组在C中与指针完全相同:它实际上只是指向第一个元素的指针。然后,您可以在解除引用之前将索引添加到指针以获取正确的数组项。

将您的打印语句更改为printf("%d/", *(p + i));