Добавив отладочную печать, всё становится ясно
#include <iostream>
// #include <fstream> // Рано ещё
#include <time.h>
#include <cstdio>
// #define ROOT "/var/www/stats/" // Обождём
using namespace std;
void getlocaltime(tm *result);
int main (void) {
tm *loctime;
printf("MAIN1: %p\n", loctime);
getlocaltime(loctime);
char year[3];
year[3] = '\x0'; // Предохраняюсь
printf("MAIN2: %p\n", loctime);
strftime(year, 2, "%d", loctime);
cout << year << endl;
return 0;
}
void getlocaltime(tm *result) {
time_t curtime;
curtime = time(NULL);
printf("Before: %p\n", result);
result = localtime(&curtime);
printf("After: %p\n", result);
}
MAIN1: (nil)
Before: (nil)
After: 0x2b0185436ce0
MAIN2: (nil)
Функция getlocaltime(tm() ничего не возвращает.