A character array is defined globally and a structure with same name is defined within a function. Why sizeof operator returns different values for c & c++ ?
char S[13];
void fun()
{
struct S
{
int v;
};
int v1 = sizeof(S);
}
// returns 4 in C++ and 13 in C
Because in C++, the struct
you defined is named S
, while in C, it's named struct S
(which is why you often see typedef struct
used in C code). If you were to change the code to the following, you would get the expected results:
char S[13];
void fun()
{
typedef struct tagS
{
int v;
} S;
int v1 = sizeof(S);
}
In C, to refer to the struct type, you need to say struct S
. Therefore, sizeof(S)
refers to the array.
In C++, struct
is unnecessary. So the local S
hides the global S
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.