在上一章的學習過程中遇到了乙個關鍵字typedef,這個關鍵字是c語言中的關鍵字,因為object c是c的擴充套件同樣也是支援typedef的。
一. 基本作用
typedef是c中的關鍵字,它的主要作用是給乙個資料型別定義乙個新的名稱,這些型別報告內部資料型別,比如int,char 還有自定義型別struct,enum等。
typedef一般有兩個作用:(1) 給某種型別頂乙個定義比較容易記的名字,相當於別名;(2)簡化較為複雜的型別宣告。
二. typedef的使用
1. 定義新型別
語法:typedef 型別 新型別
#importtypedef
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(intnum)
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
structstudent;
struct
student stu ;
stu.age=34
; nslog(
@"%d
",stu.age);
首先定義了乙個student 的struct 型別,如果要什麼乙個student 的變數,必須使用struct student stu,stu2 格式;
typedef structstudent 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...