RosettaCodeData/Task/Pointers-and-references/C/pointers-and-references-10.c
2023-07-01 13:44:08 -04:00

37 lines
764 B
C

#include <stdio.h>
#include <stdlib.h>
typedef struct {
int val;
} num;
int addNodes(num **array, int elems);
int main(void) {
int numElems, i;
num *arr = NULL;
numElems = addNodes(&arr, 10);
for (i = 0; i < numElems; i++) {
printf("%d) %d\n", i+1, arr[i].val);
}
free(arr);
return 0;
}
int addNodes(num **array, int elems) {
num *temp = NULL;
int i;
for (i = 0; i < elems; i++) {
temp = realloc(*array, (i+1) * sizeof **array);
if (temp == NULL) {
free(*array); return -1;
} else {
*array = temp;
}
(*array)[i].val = i;
// Alternatives:
// ((*array)+i)->val = i; // or
// (*((*array)+i)).val = i;
}
return i;
}