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