Last active
September 29, 2017 03:19
-
-
Save isdampe/14cb7c2f28d3edd0e5afe702df15f93a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "stdio.h" | |
#include "stdlib.h" | |
typedef struct dyn_int_array | |
{ | |
int *base; | |
unsigned long size; | |
} dyn_int_array; | |
dyn_int_array new_dyn_int_array() | |
{ | |
dyn_int_array result; | |
result.size = 0; | |
result.base = (int *)calloc(result.size, result.size * sizeof(int)); | |
return result; | |
} | |
void dyn_int_array_push_back(dyn_int_array *array, int value) | |
{ | |
array->size += 1; | |
array->base = (int *)realloc(array->base, array->size * sizeof(int)); | |
array->base[array->size -1] = value; | |
} | |
void dyn_int_array_pop_back(dyn_int_array *array) | |
{ | |
if (array->size <= 0) | |
return; | |
array->size -= 1; | |
array->base = (int *)realloc(array->base, array->size * sizeof(int)); | |
} | |
void dyn_int_array_free(dyn_int_array *array) | |
{ | |
free(array->base); | |
} | |
int main() | |
{ | |
dyn_int_array dynamic_array; | |
//Create the dynamic integer array. | |
dynamic_array = new_dyn_int_array(); | |
//Push ten numbers to the back of the dynamic array. | |
for ( int i=1; i<=10; i++ ) | |
{ | |
dyn_int_array_push_back(&dynamic_array, i); | |
} | |
//Walk over the dynamic array. | |
for ( int i=0; i<dynamic_array.size; i++ ) | |
{ | |
printf("Value: %i, Address: %ld\n", dynamic_array.base[i], (long)&dynamic_array.base[i]); | |
} | |
//Remove one entry from the back of the dynamic array. | |
printf("Popping from back...\n"); | |
dyn_int_array_pop_back(&dynamic_array); | |
//Walk over the dynamic array again. | |
for ( int i=0; i<dynamic_array.size; i++ ) | |
{ | |
printf("Value: %i, Address: %ld\n", dynamic_array.base[i], (long)&dynamic_array.base[i]); | |
} | |
printf("Freeing memory...\n"); | |
dyn_int_array_free(&dynamic_array); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment