[英]sizeof operator returns different values for c & c++?
全局定義字符數組,並在函數內定義具有相同名稱的結構。 為什么sizeof運算符為c&c ++返回不同的值?
char S[13];
void fun()
{
struct S
{
int v;
};
int v1 = sizeof(S);
}
//在C ++中返回4,在C中返回13
因為在C ++中,您定義的struct
名為S
,而在C中,它的名稱為struct S
(這就是為什么您經常看到C代碼中使用的typedef struct
)。 如果您要將代碼更改為以下內容,您將獲得預期結果:
char S[13];
void fun()
{
typedef struct tagS
{
int v;
} S;
int v1 = sizeof(S);
}
在C中,要引用struct類型,需要說struct S
因此, sizeof(S)
指的是數組。
在C ++中, struct
是不必要的。 因此本地S
隱藏了全球S
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.