C語言(typedef 型別取別名)

鋸齒流沙發表於2017-12-13

關鍵字:typedef

簡單地用一個新的型別名代替原有的型別名

作用:

1、不同名稱代表在幹不同的事情typedef int jint;;

2、不同情況下,使用不同的別名

if defined(__cplusplus) //c++

typedef _JNIEnv JNIEnv;

typedef _JavaVM JavaVM;

3.書寫簡潔

struct Student{
	char name[20];
	int age;
};

//Age int型別的別名
typedef int Age;
//Age int型別指標的別名
typedef int* Ap;
//結構體取別名
typedef struct Student m_s;
typedef struct Student* p_s;
複製程式碼

簡寫

typedef struct Student{
	char name[20];
	int age;
}m_s,*p_s;
複製程式碼
typedef struct Student{
	char name[20];
	int age;
}MS,*PS;

//Age int型別的別名
typedef int Age;
//Age int型別指標的別名
typedef int* Ap;
////結構體取別名
//typedef struct Student MS;
//typedef struct Student* PS;

void main(){
	Age a = 15;
	Ap p = &a;
	//結構體變數
	MS s1 = { "xiaoming", 20 };
	//結構體指標
	PS ps = &s1;
	printf("name:%s  age:%d\n", s1.name, s1.age);
	printf("name:%s  age:%d\n", ps->name, ps->age);
	getchar();
}

複製程式碼

執行結果.png

說明:

1、以上的方法實際上是為特定的型別指定了一個同義字 ;

2、用typedef只是對已經存在的型別指定一個新的型別名,而沒有創造新的型別;

3、用typedef宣告陣列型別、指標型別,結構體型別、共用體型別、列舉型別等,使得程式設計更加方便;

4、typedef與#define表面上有相似之處, 但仍有本質區別:

5、當不同原始檔中用到同一型別資料時,常用typedef宣告一些資料型別。可以把所有的typedef名稱宣告單獨放在一個標頭檔案中,然後在需要用到它們的檔案中用#include指令把它們包含到檔案中。這樣程式設計者就不需要在各檔案中自己定義typefef名稱了。

6、使用typedef名稱有利於程式的通用與移植。有時程式會依賴於硬體特性,用typedef型別就便於移植。

相關文章