Reputation: 11585
I have a char*
array as follows:
char *tbl[] = { "1", "2", "3" };
How do I use the sizeof
operator to get the number of elements of the array, here 3?
The below did work, but is it correct?
int n = sizeof(tbl) / sizeof(tbl[0])
Upvotes: 31
Views: 106874
Reputation: 170479
Yes,
size_t n = sizeof(tbl) / sizeof(tbl[0])
is the most typical way to do this.
Please note that using int
for array sizes is not the best idea.
Upvotes: 40
Reputation: 1169
Yes, it will give you the number of elements in the array tb1.
int n = sizeof(tbl) / sizeof(tbl[0])
Interpretation:
sizeof(tb1) will gives the size of the entire array i.e, tb1 = 3 bytes
sizeof(tb1[0]) gives the size of the character as tb1[0] gives a character value(value at address tb1+0) = 1 byte
Division of those two will give you 3 elements
Upvotes: 4
Reputation: 320371
The shorter and, arguably, cleaner version would look as
sizeof tbl / sizeof *tbl
:)
Upvotes: 19