C語言學習內容總結2017 11 21(結構體)

2021-08-11 06:51:46 字數 2104 閱讀 9037

1.結構體:

下面一段**:

#include

using namespace std;

/*void main()

;*///直接在函式裡面定義

//結構體就是在設計新的型別。

//結構體的寫法如下:

struct student

//設計學生(結構體)的屬性。

;//對結構體變數的賦初值:

int main()

/*那麼為什麼不能在定義結構體的時候對結構體裡面的變數進行賦初值呢?這是因為:結構體相當於一張空白的圖紙,在結構體裡面只能定義結構體的資料屬性,而不能對結構體裡面的資料進行操作。*/

2.對於下面一段**:

void main()

int a; //在記憶體中劃分4byte的記憶體空間。但這段記憶體為隨機值。

3.字串常量屬於資料區。

結構體中記憶體的對齊格式預設的是8byte。

利用#pragma pack(2) //括號裡面可以是:1、2、4、8、16.可以干預struct記憶體的對齊方式。

4.在結構體裡面可以巢狀結構體。

5.下面一段**:

struct student//設計學生(結構體)的屬性。

stud;

//和student stud;是等價的。

6.typedef為型別重新命名關鍵字。

下面一段**:

#include

using namespace std;

int main()

7. 下面一段**:

8.下面一段** :

typedef struct

student;

和struct student

;student student ;//是可以編譯通過的。在定義結構體時,將結構體變數名與結構體名稱定義成一樣的可以防止監視。

而int int ;是不能編譯通過的。

9.結構體變數的賦初值;

#include

using namespace std;

struct student

;int main()

;//如果這樣賦初值的話,則必須嚴格按照結構體定義時的變數順序,中間不能有跳隔。否則編譯不通過。

student st2=;//這樣的部分元素賦初值也是可以的,未賦值的結構體元素則會被自動賦值為0。

結構體變數的賦初值還可以用以下的方式進行:

#include

using namespace std;

struct student ;

int main()

10.對結構體變數的宣告,系統是不會為它分配記憶體空間的,系統只會為結構體變數分配記憶體空間。

11.下面一段**:

(1)普通引用:

int a=10;

int &b=a;//b引用了a,b是a的別名。b的改變可以直接改變a的值。

(2)常引用:

const int &x=a;

cout/x=112;編譯是不能通過的。

12.下面一段**:

#include

using namespace std;

struct student ;

void main() ;

student *sp = &s1;

(*sp).id = 100;//注意這塊是要加括號的,因為點的優先順序高於*。

//sp->id=100;這兩種寫法是等價的。 }

13.指標既可以改變所指向的值也可以改變自身的值。

14.下面一段**:

#include

using namespace std;

void main()

C語言學習內容總結2017 11 7

生存期 針對程式的執行過程。2.在c語言中函式是最小的執行單位。結構體可以進行巢狀定義,但函式不能進行巢狀定義。3.在c語言中其他函式的定義必須放在主函式 主調函式 的前面,或者將其他函式的宣告放到主函式的前面。否則編譯不通過。下面一段 原始檔1中的 include include 標頭.h voi...

C語言學習總結 四 剩餘內容

預處理指令,巨集定義,條件編譯,檔案操作 簡單的來說就是在程式編譯之前需要做的事情 概念 是乙個替換 的預處理指令,可以在編譯之前進行 替換 巨集展開,條件編譯,檔案包含 當需要用一些重複性 或簡單的函式運算時,可以用巨集定義.提高效率 用法 開始替換 define 被替換內容 替換成的內容 如 d...

C語言學習總結

1 c語言中有乙個賦值表示式,是其他多數高階語言中沒有的。2 c 語言的輸入與輸出操作是由函式來完成的,它不提供輸入輸出語句。3 c語言中有乙個共用體,其變數所點記憶體長度是其最長 成員變數的長度。4 static char a language char p a 8 5 void main int...