#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
struct infomation{
char plate_num[16];
char time_str[32];
};
int main(void)
{
int i = 0;
struct infomation **p2Info = malloc(5 * sizeof(struct infomation *));
if(p2Info == NULL){
printf(" %d cannot malloc mem!\n", __LINE__);
return -1;
}
for(i = 0; i < 5; i++){
*(p2Info + i) = malloc(sizeof(struct infomation *));
if(*(p2Info + i) == NULL){
printf(" %d cannot malloc mem!\n", __LINE__);
return -1;
}
strcpy((*(p2Info + i))->plate_num, "hello world");
strcpy((*(p2Info + i))->time_str, "2015-03-21");
}
printf("%s %s\n", (*(p2Info + i))->plate_num, (*(p2Info + i))->time_str);
return 0;
}
在打印printf("%s %s\n", (*(p2Info + i))->plate_num, (*(p2Info + i))->time_str); 时,可以打印出正确结果。
我这里的问题就是为什么能打印出正确结果?
在循环内分配空间, *(p2Info + i) = malloc(sizeof(struct infomation *));应该有问题吧,我觉得是该改成
*(p2Info + i) = malloc(sizeof(struct infomation )); 才对。