typedef struct objc_class *Class
typedef struct objc_object *id
以上可知,在OC中,對(duì)象底層的表示是一個(gè)struct
這篇文章帶你復(fù)習(xí)下c/c++的struct。
先上維基百科的一段解釋
在C語(yǔ)言中,結(jié)構(gòu)體(struct)指的是一種數(shù)據(jù)結(jié)構(gòu),是C語(yǔ)言中復(fù)合數(shù)據(jù)類型(aggregate data type)的一類。結(jié)構(gòu)體可以被聲明為變量、指針或數(shù)組等,用以實(shí)現(xiàn)較復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。結(jié)構(gòu)體同時(shí)也是一些元素的集合,這些元素稱為結(jié)構(gòu)體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。
參考鏈接
總結(jié)來(lái)說(shuō) 結(jié)構(gòu)體是由一些基礎(chǔ)數(shù)據(jù)類型構(gòu)成一個(gè)復(fù)合類型;
結(jié)構(gòu)體聲明方式
// 第一種
struct Stu {
char name[16];
int age;
} xh,dy;
struct Stu liming;
可以在聲明結(jié)構(gòu)體的同時(shí)去聲明一個(gè)或者多個(gè)結(jié)構(gòu)體變量 xh,dy;
也可以單獨(dú)使用去聲明 如struct Stu liming;
??注意 struct Stu是一個(gè)整體,是一個(gè)類型, 用來(lái)聲明結(jié)構(gòu)體變量;
// 第二種 匿名結(jié)構(gòu)體
struct {
char name[16];
int age;
} noName;
如果這個(gè)結(jié)構(gòu)體變量只需要聲明一次, 可以寫成匿名結(jié)構(gòu)體
// 第三種 typedef 重新創(chuàng)建一個(gè)類型
typedef struct {
char *name;
int age;
} Person;
Person p1, p2;
struct Stu {
char name[16];
int age;
} xh,dy;
typedef struct Stu Student;
使用typedef 重新命名類型, 方便實(shí)用;
結(jié)構(gòu)體賦值方式
先簡(jiǎn)單定義個(gè)結(jié)構(gòu)體
typedef struct {
char name[16];
int age;
} Person;
第一種
Person p = {"liming", 25};
初始化的時(shí)候同時(shí)賦值,?? 注意順序
第二種
Person p;
p.age = 23;
p.name = "liming";
因?yàn)榉珠_賦值, 順序不順序無(wú)所謂
第三種
Person p = {
.age = 23,
.name = "liming"
};
這種賦值方式更像前倆種的結(jié)合體,??這種方式不能先聲明 再賦值, 只能一次性一條語(yǔ)句完成
?錯(cuò)誤示范
Person p;
p = {
.age = 23,
.name = "liming"
};
上面這種是不對(duì)的;