C sizeof char* array

102,554

Solution 1

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.

Solution 2

The shorter and, arguably, cleaner version would look as

sizeof tbl / sizeof *tbl

:)

Solution 3

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

Share:
102,554
Ayman
Author by

Ayman

Creator of JSyntaxPane. Working as Consultant and coding for fun.

Updated on September 16, 2020

Comments

  • Ayman
    Ayman almost 4 years

    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])