歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 淺談結構體及Linux下內存分配原則

淺談結構體及Linux下內存分配原則

日期:2017/3/1 10:12:07   编辑:Linux編程

結構體在程序中的應用是很廣泛的,要處理的問題越復雜,數據量越多月雜,就越需要用到結構體。比如網絡,內核,驅動等等。熟練使用結構體對每個程序員都是至關重要的。一個好的結構體不僅能使程序體系結構清晰,而且使得操作靈活,可擴展性強。linux網絡之所以很強大,這和它裡設計合理的數據結構有很大關系。

結構體定義:

  1. struct a{
  2. int xx:4;
  3. int yy:4;
  4. };

結構體初始化:

方式一:

  1. struct a aa ={
  2. xx:2,
  3. yy:3
  4. };

方式二:

  1. struct a cc ={
  2. .xx=6,
  3. .yy=1,
  4. };

方式三:

struct a dd={4,2};

在定義中,可以限制變量的位的作用域,比如上面的:int xx:4;這表明xx的有效域只有4位,也就是能給他賦值的最大值為15,如果超過這個值,編譯器就會報錯:warning: overflow in implicit constant conversion。

在這裡如果你給xx賦值為15,如:

  1. struct a cc ={
  2. .xx=15,
  3. .yy=1,
  4. };

然後輸出:

printf("cc.xx = %d\n",cc.xx);

結果會是:-1

因為這裡定義的xx為int 型,15的二進制位1111,最高位為1,表示為負數,所以取反加1後為0001。所以是-1。

這種位域操作的好處是當你不需要用到你定義的類型的長度時,可以加位域操作以節省內存空間。

Copyright © Linux教程網 All Rights Reserved