我正在尝试创建一个结构数组,也是一个指向该数组的指针.我不知道阵列有多大,所以它应该是动态的.我的结构看起来像这样:
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;
Run Code Online (Sandbox Code Playgroud)
...我需要为每个文件(未知数量)提供多个这些结构,我将分析.我不知道该怎么做.由于数组大小的限制,我不喜欢以下方法:
# 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];
Run Code Online (Sandbox Code Playgroud)
那我该怎么创建这个数组呢?此外,指向此数组的指针会看起来像这样吗?
stats_t stats[];
stats_t *statsPtr = &stats[0];
Run Code Online (Sandbox Code Playgroud)
这是通常的方式:
size_t n = <number of elements needed>
stats_t *ptr = malloc (n * sizeof (stats_t));
Run Code Online (Sandbox Code Playgroud)
然后,填写它,
for (size_t j = 0; j < n; ++j)
{
ptr [j] .hours = whatever
ptr [j] .days = whatever
...
}
Run Code Online (Sandbox Code Playgroud)