C中的结构数组
我正在尝试创建一个结构数组,也是一个指向该数组的指针。 我不知道数组有多大,所以它应该是动态的。 我的结构看起来像这样:
typedef struct _stats_t { int hours[24]; int numPostsInHour; int days[7]; int numPostsInDay; int weeks[20]; int numPostsInWeek; int totNumLinesInPosts; int numPostsAnalyzed; } stats_t;
…我需要为每个文件(未知数量)提供多个这些结构,我将分析。 我不知道该怎么做。 由于数组大小的限制,我不喜欢以下方法:
# define MAX 10 typedef struct _stats_t { int hours[24]; int numPostsInHour; int days[7]; int numPostsInDay; int weeks[20]; int numPostsInWeek; int totNumLinesInPosts; int numPostsAnalyzed; } stats_t[MAX];
那我该怎么创建这个数组呢? 此外,指向此数组的指针会看起来像这样吗?
stats_t stats[]; stats_t *statsPtr = &stats[0];
这是通常的方式:
size_t n = stats_t *ptr = malloc (n * sizeof (stats_t));
然后,填写它,
for (size_t j = 0; j < n; ++j) { ptr [j] .hours = whatever ptr [j] .days = whatever ... }
指针的第二个选项很好。
如果要动态分配内容,请尝试:
stats_t* theStatsPointer = (stats_t*) malloc( MAX * sizeof(stats_t) );
正如罗兰所说。
别忘了
free(theStatsPointer);
当你完成了。
使用malloc():
malloc
是你的朋友。
stats_t stats[] = (stats_t*)malloc(N * sizeof(stats_t));
stats
sort 是指向数组的指针。 或者您可以使用stats[3]
语法,就像它被明确声明为数组一样。
根据您对其他答案的回复,您似乎需要一个动态数据结构,如链接列表。 看一下queue(3)
的设施。