Object C學習筆記21 typedef用法

2021-09-06 14:46:33 字數 1957 閱讀 2325

在上一章的學習過程中遇到了乙個關鍵字typedef,這個關鍵字是c語言中的關鍵字,因為object c是c的擴充套件同樣也是支援typedef的。

一. 基本作用

typedef是c中的關鍵字,它的主要作用是給乙個資料型別定義乙個新的名稱,這些型別報告內部資料型別,比如int,char 還有自定義型別struct,enum等。

typedef一般有兩個作用:(1) 給某種型別頂乙個定義比較容易記的名字,相當於別名;(2)簡化較為複雜的型別宣告。

二. typedef的使用

1. 定義新型別

語法:typedef 型別 新型別

#import

typedef

intnewint;

typedef newint firstint;

int main(int argc, const

char *argv)

return0;

}

typedef int newint 將型別int重新定義為newint型別,在後面的**中我們可以看出使用 newint a=5; 這裡出現了新的型別newint,而這個等價於

int a=5。 繼續看 typedef newint firstint 這裡使用的newint定義乙個新型別firstint。 在後面的**中宣告變數firstint b=19 同樣通過,這個等價於

newint b=19 等價於 int b=19 ,從上面可以看出他們之間是可以傳遞的。

2. 函式指標

在使用到函式指標的時候,因為很多c方面的語法有欠缺,很多都是重新去查詢資料溫習,可能在某些地方還有錯誤。

語法: typedef 返回值型別 (*新型別) (引數列表)

int newfunc(int

num)

int main(int argc, const

char *argv)

return0;

}

上面的**中定義了乙個新的函式newfunc 其中返回值型別為int,有乙個輸入引數也是int。

在main方法中使用typedef 給函式newfunc定義了乙個新的指標型別myfun。 然後這個型別指向了newfunc函式。

3. typedef 結構體和列舉

關於結構體和列舉可以參考文章:  object c學習筆記19-列舉

object c學習筆記20-結構體

對比下面兩段**,看看使用typedef的struct和不使用typedef的struct的不同之處

不使用typedef的struct

struct

student;

struct

student stu ;

stu.age=34

; nslog(

@"%d

",stu.age);

首先定義了乙個student 的struct 型別,如果要什麼乙個student 的變數,必須使用struct student stu,stu2 格式;

typedef struct

student stu;

stu a,b;

a.age=45

; b.age=32

; nslog(

@"%d

",a.age);

上面**的作用就相當於給結構型別struct student 指定了乙個新名稱 stu,所以在後面的使用的時候就不需要使用struct student 可以直接使用stu即可。而使用enum 型別也是同樣如此。

三. 複雜宣告

先看看這個是什麼東西 int (*(*func[7][8][9])(int*))[5];  能看懂不,看不懂,理解需要點水平,到目前為止我也只是半懂的狀態,這裡不能班門弄斧的講解複雜的宣告。這裡可以建議看一篇文章 "c 複雜宣告"

Object c學習筆記十二 特性

前面我們在編寫的時候用到了set方法和get方法。在object c2.0中引入了特性 property 在標頭檔案中修改,用到關鍵字 property 可以看如下 property float rainhandling property float snowhandling void setrai...

學習筆記2 1

step1 庫函式匯入 基礎函式庫 import numpy as np 匯入畫相簿 import matplotlib.pyplot as plt import seaborn as sns 匯入邏輯回歸模型函式 from sklearn.linear model import logisticr...

Object c基礎程式設計學習筆記 集合

1 nsarray 首先,nsarray有兩個限制 1 首先,它只能儲存oc物件,並不能儲存c語言的資料型別 2 其次,不可以儲存nil,因為nsarray中nil代表結束,但是如果我們想要新增乙個空,那麼應該使用nsnull unsigned count 這裡可以知道包涵物件的個數 id obje...