隨緣結構體,瞎jb講的,神仙請忽略

2022-06-02 19:33:08 字數 1975 閱讀 6620

前置技能:點點指標

(1)一般形式

他的一般格式只這樣的(記得struct關鍵字喲):

struct 結構體名

;    //注意不要忘記此處的;

比如我們要建立乙個人的結構體,它就至少包括,身高體重年齡名字等等資料,就可以如下構造:

struct human//

乙個名字為human的結構體

;

(2)定義結構體型別的變數、指標變數和陣列定義結構體型別變數有以下三種方法

方法一:在定義結構體型別時,同時定義變數。

struct human//

乙個名字為human的結構體

stu1,*stu,stus[5];//

分別定義了該型別的普通變數,指標,和結構體陣列

方法二:先定義結構體型別,再定義該型別的變數

struct human//

乙個名字為human的結構體

;struct human stu1,*stu,stus[5]; //

分別定義了該型別的普通變數,指標,和結構體陣列

方法三:用型別定義符typedef先給結構體型別名別名,再用別名定義變數

typedef struct human//

乙個名字為human的結構體

stu;

stu stu1,*stu,stus[5]; //

分別定義了該型別的普通變數,指標,和結構體陣列

這裡的typedef就是把human這個型別的結構體,命名為了stu,stu就等價於struct human了。

typedef還可以把一些型別名很長的簡化,比如long long可以變成ll。

typedef long long ll;

注意:別把結構體型別跟變數弄混了。

1.型別:不分配記憶體;變數:分配記憶體;

2.型別:不能賦值、訪問、運算;變數:可以;

3.結構體可以巢狀;

4.結構體成員名與程式中變數名可相同,不會混淆。

巢狀結構體就是可以在乙個結構體了,包含另乙個結構體的型別的。

typedef long

long

ll;struct

date;

struct

studentstu;

(3)給結構體變數賦初值一般格式:結構體型別 結構體變數名 = ;

struct

[student] stu[

2]=,};

#include struct human//

乙個名字為human的結構體

方法二:

struct

student;

struct student stu = ;

(4)引用結構體變數中的成員的訪問a.結構體變數名·成員名:stu1.name

b.結構體指標變數—>成員名:ps—>name

c.(*結構體指標變數).成員名:(*ps).name

d.結構體變數陣列名.成員名:stu[0].name

注:1.求結構體型別資料的位元組數   sizeof(變數名或型別名);

大概就是這些把,emmm建構函式哪些好像是c++的?忘了,下次更新就接著講鍊錶把。。

王老師 結構體 第二講

1.動態申請記憶體塊,原型 void malloc int x 功能 申請大小為x的記憶體塊,返回所分配記憶體起始位址或空指標.該空間是在堆中分配的.釋放記憶體 void free void p p所指的記憶體區域一定是由函式malloc分配的.2.定義新型別名 typedef 復合說明項 其好處在...

結構體 結構體變數 結構體指標的基本問題

注意 以下都是32位的系統 一 結構體定義 第乙個問題 下面兩個 struct human struct human 這兩個結構體是否相同?答案 不一樣 原因 根據c語言結構體的機制,我們為結構體變數分配乙個連續空間時,總是以結構體中最大位元組長度型別的整數倍分配。第乙個的記憶體分布圖 length...

熟悉結構體 結構體的記憶體對齊

結構的宣告注意問題。結構體成員的訪問 結構變數的成員是通過點操作符 訪問的。如果是結構體指標,則用 結構體的自引用 struct node 結構體內存對齊 為什麼要存在記憶體對齊?1.平台問題 移植原因 不是所有的硬體平台都能訪問任意位址上的任意資料的 某些硬體平台只能在某些位址處取某些特定型別的資...