關鍵字:typedef
用法:為各種數據類型定義一個新名字(別名)
typedef與基本數據類型
typedef int Integer;Integer a= 8;
也可以在別名的基礎上再起一個別名
typedef Integer MyInteger;MyInteger a = 8;
原來的數據類型也可以正常使用
typedef與指針
typedef char *String;String str = “jackie”;
typedef與結構體
typedefstructPerson Per;// 這樣在定義結構體變量時 就不用帶上struct 關鍵字了
Per p; p.name = “xyz”;
定義並取別名:
typedefstruct Student// 結構體名 Student 可以省略
{
int age;
} Stu;
void processStudent()
{
Stu student = {18};
student.age =19;
}
typedef與指向結構體的指針
typedef struct
{
int age;
} Stu;
Stu stu = {20};
typedef Stu *S;//指向結構體的指針 取別名 S
S s = &stu;
typedef struct LNode
{
int data;
struct LNode *next;
} LinkList, *SList;
int main(int argc, const char * argv[])
{
LinkList l = {1, NULL};
LinkList ll = {2, NULL};
l.next = ≪
printf("%d, ", l.next->data);
SList sl = ≪
if (sl->next != NULL)
printf("%d, ", sl->data);
return 0;
}
typedef與枚舉類型
typedef enum
{
…
} Season;
//用法與結構體類似
typedef與指向函數的指針
int sum(int a, int b)
{
return a + b;
}
void main()
{
typedef int (*P)(int a, int b);
P p = sum;
int result = (*p)(3, 5);
return 0;
}
typedef與#define
typedef char *String;
String s = “abc”
#define String char *;
String s = “abc”; //這樣使用效果一樣
當 這樣使用:
String s1,s2; //用第一種替換: char *s1, char *s2;
String s3,s4; //用第二種替換: char * s3, s4; <==> char *s3, char s4;