在C語言中,結構體(struct)、聯合(union)和typedef是用于組織和定義數據類型的關鍵概念。以下是這些概念的詳細解釋:
結構體(Struct):
結構體是一種用戶自定義的數據類型,它允許將不同類型的數據組合在一起,形成一個新的數據類型。
結構體的定義:
#include <stdio.h>
// 定義結構體
struct Student {
int rollNumber;
char name[50];
float marks;
};
int main() {
// 創建結構體變量
struct Student student1;
// 訪問結構體成員并賦值
student1.rollNumber = 101;
strcpy(student1.name, "John Doe");
student1.marks = 85.5;
// 輸出結構體成員
printf("Roll Number: %d\n", student1.rollNumber);
printf("Name: %s\n", student1.name);
printf("Marks: %.2f\n", student1.marks);
return 0;
}
聯合(Union):
聯合是一種特殊的數據類型,它允許在相同的內存位置存儲不同的數據類型。聯合的大小取決于其最大成員的大小。
聯合的定義:
#include <stdio.h>
// 定義聯合
union Data {
int intValue;
float floatValue;
char stringValue[20];
};
int main() {
// 創建聯合變量
union Data data;
// 賦值并輸出
data.intValue = 42;
printf("Integer Value: %d\n", data.intValue);
data.floatValue = 3.14;
printf("Float Value: %.2f\n", data.floatValue);
strcpy(data.stringValue, "Hello");
printf("String Value: %s\n", data.stringValue);
return 0;
}
typedef:
typedef是C語言中的關鍵字,它用于為現有的數據類型創建新的名稱(別名)。這樣做可以使代碼更加清晰、易讀。
typedef的使用:
#include <stdio.h>
// 使用typedef為數據類型創建別名
typedef unsigned long long int ULLI;
int main() {
// 使用別名
ULLI bigNumber = 12345678901234567890ULL;
printf("Big Number: %llu\n", bigNumber);
return 0;
}
通過結構體、聯合和typedef,C語言提供了一種靈活的方式來組織和定義自定義數據類型。結構體允許將不同類型的數據組合在一起,聯合允許在相同的內存位置存儲不同的數據類型,而typedef則用于為數據類型創建別名。