struct cl{ unsigned char *buffer; time_t t = time(0); struct tm * ct = localtime(&t); };
接着:
cl sadi[10];
但是例如我在21:58得到了sadi [5],当时我在21:59得到了sadi [6].然后我再次检查我的sadi [].ct-> tm_min是59.这是什么问题?这是不能持有你抓住它的那一刻,它会永远更新吗?如果是这样,我如何捕捉时刻,而不是这样更新.
struct tm* ct = localtime(&t);
问题是localtime(&)返回的指针是静态内部缓冲区.所以每次调用它都返回完全相同的指针值(地址).这意味着所有的数组元素都有指向同一个struct tm对象的指针.
一个解决方案是在每次调用本地时间时复制数据:
struct cl { unsigned char* buffer; time_t t = time(0); struct tm ct = *localtime(&t); };
所以现在我声明struct tm ct; (而不是指针),并使用返回的指针* localtime(& t)的取消引用值进行初始化.