簡體   English   中英

sizeof運算符為c&c ++返回不同的值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM