c/c++結(jié)構(gòu)體復(fù)習(xí)

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ì)的;


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容