diff options
Diffstat (limited to 'main_dyn_flex.c')
| -rw-r--r-- | main_dyn_flex.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/main_dyn_flex.c b/main_dyn_flex.c new file mode 100644 index 0000000..caed973 --- /dev/null +++ b/main_dyn_flex.c @@ -0,0 +1,46 @@ +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +struct va { + int n; + int nmax; + int data[]; +}; + +void create_array(struct va **va, int nmax) { + *va = (struct va *) malloc(sizeof(struct va) + nmax * sizeof(int)); + if(*va == NULL) + return; + (*va)->n = 0; + (*va)->nmax = nmax; +} + +void init_array(struct va *va, int n, int *src) { + if(n > va->nmax) + return; + va->n = n; + memcpy(va->data, src, n * sizeof(int)); +} + +void free_array(struct va *va) { + if(va) + free(va); +} + +int main(int argc, char *argv[]) { + struct va *va = NULL; + int t[5] = {1,2,3,4,5}; + int i; + + create_array(&va, 12); + init_array(va, 5, t); + + for(i = 0; i < va->n; ++i) { + printf("%d\n", va->data[i]); + } + + free_array(va); + + return 0; +} |
