#include #include #include struct va { int n; int nmax; int *data; }; void create_array(struct va *va, int nmax) { va->n = 0; va->nmax = nmax; va->data = (int *) malloc(nmax * sizeof(int)); if(va->data == NULL) // no space left to allocate data... return; } 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->data) free(va->data); va->nmax = 0; va->n = 0; va->data = NULL; } int main(int argc, char *argv[]) { struct va va; 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; }