Skip to content

Instantly share code, notes, and snippets.

@isdampe
Last active September 29, 2017 03:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save isdampe/14cb7c2f28d3edd0e5afe702df15f93a to your computer and use it in GitHub Desktop.
Save isdampe/14cb7c2f28d3edd0e5afe702df15f93a to your computer and use it in GitHub Desktop.
#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