Home > other >  How to find if the data type is a struct?
How to find if the data type is a struct?

Time:11-02

Assume that you have the struct my_struct in C. Then you are using sizeof(my_struct) to find how many bytes that struct have. Is there any way to find out that my_struct is a struct just by using sizeof() method in C?

For example, if I want to find out that my_variable is 16-bit, then I just check if sizeof(my_variable) == 2.

Can I do the same for struct in C?

CodePudding user response:

Can I do the same for struct in C?

sizeof(my_variable) does the exact same thing for structs as for non-structs.

Specifically,

  • sizeof( my_variable ) == 2 doesn't mean the variable uses up 16 bit.

    It means that my_variable uses up 2 bytes. Even though a byte is usually 8 bits in size these days, that's not always the case. Historically, they have been as large as 32 bits!

  • sizeof( my_variable ) == 2 doesn't mean the variable can store 16-bit numbers.

    sizeof doesn't say anything about the type except for its size.

For example,

sizeof( long ) sizeof( float ) and sizeof( struct { char a; int b; } ) could all return the same number.

  • Related