Pointers are evil, thats all I can say.
You think you know them, and then they start doing silly sh*t is you get sloppy.
So be CAREFUL and TIDY and you should avoid many nightmares...

Just to clarify, where you say "non-string" does need expanding, just in case
your understanding is incomplete...

When you create a string variable with "STRING* filename;", notice how it
ALREADY has an "*" in it? Thats because it is a POINTER to a STRING struct
in memory somewhere. The 'somewhere' is supplied by the str_create function.

Thats why the multi-dim string array needs the extra '*', because it is an array
of POINTERS, not an actual array of DATA.

You will see meny other game objects are defined as pointers too. ENTITY, BMAP, FONT, TEXT, custom structs, etc... These would all need the extra '*' too.

If this was already obvious, I apologise.
I just want to be sure you that you got the WHOLE picture.


Also ... if you want to learn bad habits.. then read on...
Click to reveal..

A couple of 'dirty tricks' I regularly use to avoid using the 'bracketed'
syntax for multi-dim arrays are as follows.
Code:
ENTITY* **ent_grid;    //the entity array we wish to access
...
(ent_grid[x])[y] = ent_create(blah,blah);   // the CORRECT way to access it
var lifespan = (ent_grid[x])[y].skill22;    // the correct way to access it

....... Evil Shortcut #1
ENTITY* **ent_grid;    //the entity array we wish to access

ENTITY* _ent_grid(int x, int y)   {   return((ent_grid[x])[y]);  }  //lookup function
...
_ent_grid(x,y) = ent_create(blah,blah);   // the dirty way #1 to access it
var lifespan = _ent_grid(x,y).skill22;    // the dirty way #1 to access it


....... Evil Shortcut #2
ENTITY* **ent_grid;    //the entity array we wish to access

#define _ent_grid(x,y)   (ent_grid[x])[y]   //re-syntax macro
...
_ent_grid(x,y) = ent_create(blah,blah);   // the dirty way #2 to access it
var lifespan = _ent_grid(x,y).skill22;    // the dirty way #2 to access it


Using either of these, your CODE is cleaner, but they really are BAD habits to
get into. But I have so many bad habits already, what is a few more...

I seem to remember Dirty Trick #1 had problems in certain situations, I just
cant remember them, as I normally use #2, or correct syntax if it is for sharing.


"There is no fate but what WE make." - CEO Cyberdyne Systems Corp.
A8.30.5 Commercial