我试图从函数返回一个数组,并且在函数中有一个指针,但是当我尝试返回数组时,它只返回第一个元素! :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
答案 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));