C/C++ 結構體的內存結構說明

1、什麼是結構體,爲什麼需要結構體?

結構體的意思就是結構化的數據,源於結構化的數據管理。是人們最初用數據描述世界的一種方式。也是面向對象的根源。在對具有多屬性的事物的數據進行處理時,結構化的存儲方式,使得處理方法和處理效率大大提高。從最初數據在內存中結構化的安排,到C語言抽象出結構體的概念,再到C++抽象出類的概念,程序世界的一個新的視角就此打開。程序的世界由一維的內存世界,變爲多維的對象世界。


2、結構體的聲明定義、初始化、使用。

定義例子如下:

  • struct student{char name[10];int age;}  struct student s1,s2; 和用普通類型定義變量一樣
  • struct student{char name[10];int age;} s1,s2; 在定義類型的同時,定義變量。
  • struct {char name[10],int age;} s1,s2= {"jack",10}; 定義結構體時不給出結構體的名字,直接來使用(隱式定義)。

定義的時候初始化,可以直接通過{}給出初始值。否則的話就需要爲裏面的每一項進行賦值。


3、在瞭解了結構體之後, 我們不妨來思考這樣一個問題:數據類型是什麼?

對於數據類型, 我們是用來定義變量的,進而保存我們的數據。它規定了變量所要佔用的字節數,以及如何對其內容進行存儲。同樣的結構體其實就是我們自己定義的類型。C語言允許我們根據實際的事物來定義特定的類型,然後定義這個類型的變量來保存事物的數據。


4、內存結構表示:

首先,結構體變量名就像普通的變量名一樣。可以用&取地址 如果用變量名錶示一個結構體變量,那麼它實際表示的是前四個字節的內容。所以,爲了避免錯誤,我們使用的時候,就要找出裏面的每一項進行使用。

其次,它在保存的時候,爲了保持高的內存利用率和快速的存取操作,採用了內存對其的方式進行保存。也就是以域中長度最長的類型爲單位申請空間(Visual Studio 的一種方式,可能並不通用,但它給了我們一個提高效率的思路)。


5、結構體使用的兩種方式:

  • 用變量名的方式使用:struct student s  s.a ;s.b; 其中,"."被稱爲成員分量運算符。
  • 用結構體變量地址的方式:struct student *ps = &sps->a; ps->b;其中,"->"被稱爲指向運算符
發佈了41 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章