C语言可变数组实例 C语言复合字面量实例 C语言使用结构数组函数实例 C语言可变数组实例 // flexmemb.c -- flexible array member (C99 feature) #include <stdio.h> #include <stdlib.h> struct flex { size_t count; double average; double scores[]; // flexible array member }; void showFlex(const struct flex * p); int main(void) { struct flex * pf1, *pf2; int n = 5; int i; int tot = 0; // allocate space for structure plus array pf1 = malloc(sizeof(struct flex) + n * sizeof(double)); pf1->count = n; for (i = 0; i < n; i++) { pf1->scores[i] = 20.0 - i; tot += pf1->scores[i]; } pf1->average = tot / n; showFlex(pf1); n = 9; tot = 0; pf2 = malloc(sizeof(struct flex) + n * sizeof(double)); pf2->count = n; for (i = 0; i < n; i++) { pf2->scores[i] = 20.0 - i/2.0; tot += pf2->scores[i]; } pf2->average = tot / n; showFlex(pf2); free(pf1); free(pf2); return 0; } void showFlex(const struct flex * p) { int i; printf("Scores : "); for (i = 0; i < p->count; i++) printf("%g ", p->scores[i]); printf("\nAverage: %g\n", p->average); } C语言复合字面量实例 C语言使用结构数组函数实例