C语言中的结构体
宏在進行編譯的階段會進行替換,宏替換或者是宏展開。帶參數(shù)的宏,機械的進行展開就可以了。
多維數(shù)組在做參數(shù)的時候會退化成為一個指針。
指針數(shù)組的自我結(jié)束能力,指的是最后一個元素為0,用來表示指針已經(jīng)達到的結(jié)尾。
在C語言中‘\0’和0和NULL是同一回事。只是表達的環(huán)境不同而已。
知道在什么框架下干的活。
結(jié)構(gòu)體類型定義和結(jié)構(gòu)體變量的定義。
如何定義一個結(jié)構(gòu)體類型。
struct關(guān)鍵字
struct Teacher{
??? char name[64];
??? int age;
??? int id;
};
定義變量的方式:
struct Teacher tea;
這里定義一個數(shù)據(jù)類型,數(shù)據(jù)類型是固定大小的內(nèi)存塊的別名。
這里相當于是定義了一個數(shù)據(jù)類型,然后用這個數(shù)據(jù)類型來分配變量。
類型的重定義用typedef,結(jié)構(gòu)體可以用typedef來進行重定義。
typedef struct Teacher{
??? char name[64];
??? int age;
??? int id;
} Teacher;
定義變量的方式:
Teacher tea;
用結(jié)構(gòu)體類型定義變量的方式有三種:
定義類型的同時定義變量
定義匿名類型的時候定義變量
用結(jié)構(gòu)體類型來定義變量
初始結(jié)構(gòu)體變量的三種方法:
用結(jié)構(gòu)體定義變量的時候初始化結(jié)構(gòu)體變量
在定義匿名結(jié)構(gòu)體定義結(jié)構(gòu)體變量的時候初始化結(jié)構(gòu)體變量
結(jié)構(gòu)體變量的引用
.操作符是做什么的?有沒有操作內(nèi)存?
.是尋址操作,是計算變量相對于結(jié)構(gòu)體變量的偏移量,沒有操作內(nèi)存,在賦值的時候才操作內(nèi)存。
通過指針的方式操作內(nèi)存空間,->
->也是在尋址,是計算變量相對于結(jié)構(gòu)體變量的偏移,計算在CPU中,沒有操作內(nèi)存。
結(jié)構(gòu)體做函數(shù)參數(shù)的行為。結(jié)構(gòu)體賦值=操作,編譯器提供的行為?
編譯器提供了簡單的=賦值操作。
結(jié)構(gòu)體元素做函數(shù)參數(shù),結(jié)構(gòu)體指針元素做函數(shù)參數(shù)的區(qū)別
用元素和用指針是截然不同的。結(jié)構(gòu)體變量做函數(shù)參數(shù)和結(jié)構(gòu)體指針做函數(shù)參數(shù)。
結(jié)構(gòu)體做函數(shù)參數(shù)的基本操作。
數(shù)組做函數(shù)參數(shù)會退化成為一個指針,因此需要將數(shù)組的長度給傳遞過去。
結(jié)構(gòu)體可以和參數(shù)結(jié)合起來,方便的分配內(nèi)存空間。
在進行函數(shù)調(diào)用的時候,如果是在主調(diào)函數(shù)中分配內(nèi)存,就使用一級指針,如果在被調(diào)用函數(shù)中分配內(nèi)存,就使用二級指針。
轉(zhuǎn)載于:https://www.cnblogs.com/andyniu/p/7625853.html
總結(jié)
- 上一篇: 谁偷走了我的安全感
- 下一篇: 加快liferay 7的启动速度