typedef與struct

typedef:用來爲複雜的聲明定義簡單的別名,它與宏定義有些差異(注意行末加;)。它本身是一種存儲類的關鍵字,與auto、extern、mutable、static、register等關鍵字不能出現在同一個表達式中。

struct:它是由若干“成員”組成的結構,用作定義結構體類型。

 

介紹幾種typedef和struct的組合方式:

1.從最基礎開始

//日常定義一個結構體
struct testa
{
    int a;
	int b;
	int c;
};

struct testa a;

//當使用typedef後
typedef struct testa TEST;
struct testa
{
    int a;
	int b;
	int c;
};

TEST a;

//甚至你可以這樣,表達的意思是一樣,區分類型struct TEST和標籤TEST
typedef struct TEST TEST;
struct TEST
{
    int a;
	int b;
	int c;
};

TEST a;

 2.精簡一下

typedef struct testa
{
    int a;
	int b;
	int c;
}TEST;

TEST a;

 3.然後你或許會發現,struct關鍵字後的 標籤 貌似沒有實際作用

typedef struct
{
    int a;
	int b;
	int c;
}TEST;

TEST a;

這樣的編譯是通過的,但是這樣定義的結構體和一般的結構體變量的區別就是:
1、他不能作爲參數傳遞給一個函數,因爲編譯器無法對他進行類型檢查;
2、也不能使被調用的函數返回一個沒有結構體名的結構體變量,原因同1。

引用:https://bbs.csdn.net/topics/41141

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章