This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Unbounded Arrays and the sizeof operator

I take it using sizeof() on a array that is unbounded is a problem (I am getting sizeof returns size of type 0 warnings).

I have defined a constant array of pointers unbounded IE

#define CCHARPTR code char *
CCHARPTR numerous_strings[] =
{
"string1",
"string2",
"string3.5"
};


If I wished to know the number of entries in numerous_strings I thought I could do this

(sizeof(numerous_strings)/sizeof(CCHARPTR))


Obviously I was wrong since the compiler warns sizeof(numerous_strings) is zero. How can I get the size of this array because I would like to save time in having to write a 'magic' number for the number of numerous_strings. Sounds simple, unbounded arrays seem to be what it has issues with. Suggestions anyone?

Parents
  • Here's the problem only addition and subtraction on other constants yield a constant result.

    Whatever led you do that conclusion? It's wrong.
    Any expression involving only constants can be used in any place a constant is required. E.g.

    int array[5*30+5<<3];
    

    works just fine.

    despite the const qualification.

    That doesn't make any sense --- as const qualifiers don't make anything a constant. They make an object immutable.

Reply
  • Here's the problem only addition and subtraction on other constants yield a constant result.

    Whatever led you do that conclusion? It's wrong.
    Any expression involving only constants can be used in any place a constant is required. E.g.

    int array[5*30+5<<3];
    

    works just fine.

    despite the const qualification.

    That doesn't make any sense --- as const qualifiers don't make anything a constant. They make an object immutable.

Children