struct結構體在c和c 中的區別

2021-07-10 11:03:56 字數 1766 閱讀 2953

很多次遇到這個struct的問題,今天在這裡簡單總結一下我的理解

一、struct在c 中的使用

1、單獨使用struct定義結構體型別

struct student stu1;

struct student stu2;

stu1.id=1;

stu2.id=2;

上面定義了乙個結構體型別struct student 和乙個結構體型別變數stu1。

所以有兩種定義結構體變數的方式:

一種是這就跟在結構體定義的後面(}之後),一種是用struct  結構體名  結構體變數名。

2、typedef:typedef作為c的乙個關鍵字,在c 和c++ 中都是給乙個資料型別定義乙個新的名字。這裡的資料型別包括基本資料型別(int, char等)和自定義的資料型別(struct)。

程式設計中使用typedef,其目的一般有兩個,乙個是給變數乙個容易記且意義明確的新名字,另乙個是簡化一些比較複雜的型別宣告。

所以有:

typedef struct student student;

student stu;

stu.id=1;

stu.name="zhangsan";

其中,typedef 給自定義型別struct student 起了乙個簡單的別名:student

所以student stu; 就等價於1中的struct student stu;

3、typedef 定義批量的型別別名

typedef struct student student1,student2,student3;
typedef定義了 3 個struct student 型別的別名

但是如果去掉了typedef,那麼在c++中,student1,student2,student3將是3個結構體變數

當然,如果,student 以後用不著,則可以省略student,如下所示功能與3相同。

typedef struct student1,student2,student3;

二、c++中的struct用法

1、

struct student stu;

stu.id = 1;

stu.name="";

定義了乙個student型別的結構體,還宣告了student型別的乙個結構體變數stu。 

2、typedef

typedef struct student stu2;

stu2 s2;

s2.id=1;

s2.name="zhangsan";

上面 typedef 定義了乙個結構體型別 stu2,所有要給id賦值,必須先定義乙個結構體型別變數,如s2,然後才能s2.id =1;

3、struct 定義批量的結構體變數

struct student stu1,stu2,stu3;
定義了3個結構體變數 

stu1,stu2,stu3

stu1.id =1;

stu2.id =2;

stu3.id =3;

struct結構體在c和c 中的差別

非常多次遇到這個struct的問題,今天在這裡簡單總結一下我的理解 一 struct在c 中的使用 1 單獨使用struct定義結構體型別 struct student stu1 struct student stu2 stu1.id 1 stu2.id 2 上面定義了乙個結構體型別struct s...

C 結構體 struct 詳解

陣列 array 它是一組具有相同型別的資料的集合。但在實際的程式設計過程中,我們往往還需要一組型別不同的資料,例如對於學生資訊登記表,姓名為字串,學號為整數,年齡為整數,所在的學習小組為字元,成績為小數,因為資料型別不同,顯然不能用乙個陣列來存放。在c語言中,可以使用 結構體 struct 來存放...

C語言結構體struct

定義 定義結構體,要定義兩次,1定義型別,2定義變數 1定義時 不分配記憶體,和 define一樣 定義結構體的樣式,叫什麼名字,成員,句式 2再定義 分配記憶體 用著個樣式定義變數 與typedef有點像 3如果定義的是 p指標,只表示出此結構體 變數的起始位址 struct a struct a...