C語言中typedef用法詳解

2022-09-01 17:12:15 字數 1070 閱讀 6614

在c語言中,經常有如下的用法:

typedef struct  tag

mytype, *myptr;

一旦通過如上定以後,就可以用mytype來定義struct tag結構了。

以前我使用typedef的時候,是按照其字面意思理解的,所以進入了乙個誤區。比如說我想定義myint為int型別,我用的**如下:

typedef myint int;

我把上述**理解為:定義myint型別為int。一切好像都是順其自然的事情,但編譯的時候才知道錯誤。

其實,在c語言中宣告變數的時候,有個儲存型別指示符(storage-class-specifier),它包括我們熟悉的

extern

static

auto

register

在不指定儲存型別指示符的時候,編譯器會根據約定自動取預設值。另外,儲存型別指示符的位置也是任意的(但要求在變數名和指標*之前),也就是說以下幾行**是等價的:

static const int i;

const static int i;

int const static i;

const int static i;

根據c語言規範,在進行句法分析的時候,typedef和儲存型別指示符是等價的!所以,我們把上述使用static的地方替換為typedef:

typedef const int i;

const typedef int i;

int const typedef i;

const int typedef i;

上述**的語義是:將i定義為乙個型別名,其等價的型別為const int。以後如果我們有i a;**,就等價於const int a;

對於有指標的地方也是一樣的,比如:

int const typedef *t;

那麼**

t p;

就相當於

int const *p;

另外,typedef不能和static等儲存型別指示符同時使用,因為每個變數只能有一種儲存型別,所以**:

typedef static int i;

是非法的。

C語言中typedef用法

c語言中typedef用法 1.基本解釋 typedef為c語言的關鍵字,作用是為一種資料型別定義乙個新名字。這裡的資料型別包括內部資料型別 int,char等 和自定義的資料型別 struct等 在程式設計中使用typedef目的一般有兩個,乙個是給變數乙個易記且意義明確的新名字,另乙個是簡化一些...

C語言中typedef的用法

本文是參考譚浩強的 c程式設計 第二版一書所寫,總感覺有些重點的地方書中沒有提出來,等本人遇到其他重要用法的時候再來補充,或者大家幫我提出來,以便共同學習。1 用typedef宣告新的型別名來代替已有的型別名 cpp view plain copy typedefintinteger typedef...

c語言中typedef的用法

typedef struct student linklist linklist head 以上定義了乙個新的結構體student,並將結構體起了乙個新的別名linklist 結構體中不用typedef也是可以的,定義變數時需要加上struct student struct student stru...