Ayman
Ayman

Reputation: 11585

C sizeof char* array

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

Answers (3)

sharptooth
sharptooth

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

Raju
Raju

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

AnT stands with Russia
AnT stands with Russia

Reputation: 320371

The shorter and, arguably, cleaner version would look as

sizeof tbl / sizeof *tbl

:)

Upvotes: 19

Related Questions