全局定义字符数组,并在函数内定义具有相同名称的结构.为什么sizeof运算符为c&c ++返回不同的值?
char S[13];
void fun()
{
struct S
{
int v;
};
int v1 = sizeof(S);
}
Run Code Online (Sandbox Code Playgroud)
//在C++中返回4,在C中返回13
Ada*_*ras 15
因为在C++中,struct你定义的是命名的S,而在C中,它被命名struct S(这就是你经常看到typedef struct在C代码中使用的原因).如果您要将代码更改为以下内容,您将获得预期结果:
char S[13];
void fun()
{
typedef struct tagS
{
int v;
} S;
int v1 = sizeof(S);
}
Run Code Online (Sandbox Code Playgroud)