ENTITY* ent_array[100];
gives you an array of 100 entity pointers.

In most cases I just use arrays as well and no lists.
When I remove some entity which is not the last one in the array I simply take the last one and put it at that spot instead (which solves your problem 2).


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends