匿名類別類型
類別可以是匿名的 ,也就是說,可以宣告它們,而不使用 識別碼 。 當您將類別名稱取代為 typedef
名稱時,這非常有用,如下所示:
typedef struct
{
unsigned x;
unsigned y;
} POINT;
注意
上述範例中的匿名類別用法對於保留與現有 C 程式碼的相容性而言很實用。 在某些 C 程式碼中,搭配匿名結構的使用 typedef
很普遍。
另外,當您想要讓類別成員的參考出現,就像該參考不是包含在另一個類別中一般時,匿名類別也相當實用,如下所示:
struct PTValue
{
POINT ptLoc;
union
{
int iValue;
long lValue;
};
};
PTValue ptv;
在上述程式碼中, iValue
可以使用物件成員選取運算子 ( . )來存取,如下所示:
int i = ptv.iValue;
匿名類別會受到某些限制 (如需匿名聯集的詳細資訊,請參閱 Unions .)匿名類別:
不能具有建構函式或解構函式。
無法當做引數傳遞至函式(除非使用省略號來失敗類型檢查)。
不可做為函式的傳回值傳回。
匿名結構
Microsoft 特定的
Microsoft C 擴充功能可讓您在另一個結構內宣告結構變數,而不需為它命名。 這些巢狀結構稱為匿名結構。 C++ 不允許匿名結構。
您可以存取匿名結構的成員,就如同它們是包含結構中的成員。
// anonymous_structures.c
#include <stdio.h>
struct phone
{
int areacode;
long number;
};
struct person
{
char name[30];
char gender;
int age;
int weight;
struct phone; // Anonymous structure; no name needed
} Jim;
int main()
{
Jim.number = 1234567;
printf_s("%d\n", Jim.number);
}
//Output: 1234567
END Microsoft 特定的
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應