中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

做電腦網(wǎng)站手機(jī)能顯示不出來(lái)怎么辦怎樣做推廣營(yíng)銷

做電腦網(wǎng)站手機(jī)能顯示不出來(lái)怎么辦,怎樣做推廣營(yíng)銷,建什么類型的網(wǎng)站訪問(wèn)量比較大,敏捷開(kāi)發(fā)目錄 1. 結(jié)構(gòu)體類型的聲明 1.1. 結(jié)構(gòu)的一般聲明 1.2. 結(jié)構(gòu)的特殊聲明 2. 結(jié)構(gòu)體變量的創(chuàng)建和初始化 3. 結(jié)構(gòu)體的自引用 4. 結(jié)構(gòu)體內(nèi)存對(duì)齊 4.1. 對(duì)其規(guī)則(面試考點(diǎn)) 4.2. 為什么存在內(nèi)存對(duì)齊? 4.2.1. 平臺(tái)原因(移植…

目錄

1.? 結(jié)構(gòu)體類型的聲明

1.1.? 結(jié)構(gòu)的一般聲明

1.2.? 結(jié)構(gòu)的特殊聲明?

2.? 結(jié)構(gòu)體變量的創(chuàng)建和初始化

3.? 結(jié)構(gòu)體的自引用?

4.? 結(jié)構(gòu)體內(nèi)存對(duì)齊

4.1.? 對(duì)其規(guī)則(面試考點(diǎn))

4.2.? 為什么存在內(nèi)存對(duì)齊??

4.2.1.? 平臺(tái)原因(移植原因)

4.2.2.? 性能原因

4.3.? 修改默認(rèn)對(duì)齊數(shù)?

5.? 結(jié)構(gòu)體傳參

6.? 結(jié)構(gòu)體實(shí)現(xiàn)位段?

6.1.? 什么是位段?

6.2.? 位段的內(nèi)存分配

6.3.? 位段的跨平臺(tái)問(wèn)題

6.4.? 位段的應(yīng)用

6.5.? 位段使用的注意事項(xiàng)

?————————————————Take Me Hand?————————————————


正文開(kāi)始——

1.? 結(jié)構(gòu)體類型的聲明

結(jié)構(gòu)體是一種類型,類似于 int、char、double 等,只不過(guò)結(jié)構(gòu)體類型是一種自定義類型

結(jié)構(gòu)是一些值的集合,這些值稱為成員變量。結(jié)構(gòu)的每個(gè)成員可以是不同類型的變量。

1.1.? 結(jié)構(gòu)的一般聲明

1   struct tag
2   {
3       member-list;(成員列表)
4   }variable-list;(變量列表)5    struct student
6   {
7        char name[20];
8        int  age;
9        char sex;
10  }; //此處分號(hào)很重要

1.2.? 結(jié)構(gòu)的特殊聲明?

1   //匿名結(jié)構(gòu)體類型
2   struct 
3   {
4        member-list;
5   }x;
6  
7
8  struct 
9   {
10       member-list;
11  }*p;

上面的結(jié)構(gòu)體沒(méi)有類型名,故稱為匿名結(jié)構(gòu)體類型,其中成員變量相同。分別創(chuàng)建了x,*p這兩個(gè)結(jié)構(gòu)體變量,思考下面的代碼是否合理?


1   p = &x;

答案是:不合理。編譯器會(huì)認(rèn)為上面的匿名結(jié)構(gòu)體是兩種不同的類型。

同時(shí)還要注意:匿名的結(jié)構(gòu)體類型,如果沒(méi)有對(duì)結(jié)構(gòu)體類型重命名的話,基本上只能使用一次。

2.? 結(jié)構(gòu)體變量的創(chuàng)建和初始化

3.? 結(jié)構(gòu)體的自引用?

在結(jié)構(gòu)體中包含一個(gè)類型為該結(jié)構(gòu)體本身的成員是否可以呢?

比如,定義一個(gè)鏈表的節(jié)點(diǎn),在這個(gè)節(jié)點(diǎn)處能夠找到下一個(gè)節(jié)點(diǎn)的位置及其數(shù)據(jù)。

1   struct Node
2  {
3	int data;
4	struct Node next;
5  };

答案是:no。如果可以的話 ,sizeof(struct Node)的大小是多少?如果一個(gè)結(jié)構(gòu)體中再包含一個(gè)同類型的結(jié)構(gòu)體變量,這樣結(jié)構(gòu)體變量的大小就會(huì)無(wú)窮大,不合理。

1   struct Node
2  {
3	int data;
4	struct Node* next;
5  };

?

【注意】

在結(jié)構(gòu)體自引用的過(guò)程中,夾雜了 typedef 對(duì)匿名結(jié)構(gòu)體類型重命名,這里需要注意。

1   typedef struct 
2  {
3	int data;
4	Node* next;
5  }Node;

這里對(duì)結(jié)構(gòu)體進(jìn)行了重命名(Node),但是在匿名結(jié)構(gòu)體內(nèi)部提前使用 Node 類型來(lái)提前創(chuàng)建成員變量,這不可以。所以定義結(jié)構(gòu)體不要使用匿名結(jié)構(gòu)體。

1   typedef struct Node
2  {
3	int data;
4	struct Node* next;
5  }Node;

4.? 結(jié)構(gòu)體內(nèi)存對(duì)齊

結(jié)構(gòu)體的大小是多少呢?

在計(jì)算其大小之前,我們要了解什么是結(jié)構(gòu)體內(nèi)存對(duì)齊。

4.1.? 對(duì)其規(guī)則(面試考點(diǎn))

  1. 結(jié)構(gòu)體的第一個(gè)成員對(duì)齊到和結(jié)構(gòu)體變量起始位置偏移量為0的地址處。
  2. 其他成員變量要對(duì)齊到某個(gè)數(shù)字(對(duì)齊數(shù))的整數(shù)倍的地址處。對(duì)齊數(shù)=編譯器默認(rèn)的一個(gè)對(duì)齊數(shù)與該成員變量大小的較小值。VS默認(rèn)的對(duì)齊數(shù)為8,Linux中g(shù)cc沒(méi)有默認(rèn)對(duì)齊數(shù),對(duì)齊數(shù)就是成員自身的大小。
  3. ?結(jié)構(gòu)體總大小為最大對(duì)齊數(shù)(結(jié)構(gòu)體中每個(gè)成員變量都有一個(gè)對(duì)齊數(shù),所有對(duì)齊數(shù)中最大的)的整數(shù)倍。
  4. 如果嵌套了結(jié)構(gòu)體的情況,嵌套的結(jié)構(gòu)體成員對(duì)齊到自己的成員中最大對(duì)齊數(shù)的整數(shù)倍處,結(jié)構(gòu)體的整體大小就是所有最大對(duì)齊數(shù)(含嵌套結(jié)構(gòu)體中成員的對(duì)齊數(shù))的整數(shù)倍。

練習(xí):

4.2.? 為什么存在內(nèi)存對(duì)齊??

4.2.1.? 平臺(tái)原因(移植原因)

不是所有的硬件平臺(tái)都能訪問(wèn)任意地址上的任意數(shù)據(jù)的;某些硬件平臺(tái)只能在某些地址處去取某些特定類型的數(shù)據(jù),否則拋出硬件異常。

4.2.2.? 性能原因

數(shù)據(jù)結(jié)構(gòu)(尤其是棧)應(yīng)該盡可能的在自然邊界上對(duì)齊。原因在于,為了訪問(wèn)未對(duì)齊的內(nèi)存,處理器需要做兩次內(nèi)存訪問(wèn);而對(duì)齊的內(nèi)存只需要一次訪問(wèn)。假設(shè)一個(gè)處理器總是從內(nèi)存中取8個(gè)字節(jié),則地址必須是8的倍數(shù)。如果我們能保證將所有的 double 類型的數(shù)據(jù)的地址都對(duì)齊成8的倍數(shù),那么就可以用一個(gè)內(nèi)存操作來(lái)讀或者寫值了。否則,我們可能需要執(zhí)行兩次內(nèi)存訪問(wèn),因?yàn)閷?duì)象可能被放在兩個(gè)8字節(jié)內(nèi)存塊中。

總體來(lái)說(shuō):結(jié)構(gòu)體的內(nèi)存對(duì)齊是拿空間來(lái)?yè)Q取時(shí)間的做法。

我們?cè)谠O(shè)計(jì)結(jié)構(gòu)體時(shí),既要滿足對(duì)齊,又要節(jié)省空間,我們可以讓占用空間小的成員盡量集中在一起

4.3.? 修改默認(rèn)對(duì)齊數(shù)?

#pragma? 這個(gè)預(yù)處理指令,可以改變編譯器的默認(rèn)對(duì)齊數(shù)。

結(jié)構(gòu)體在對(duì)齊方式不合適時(shí),我們可以自己更改默認(rèn)對(duì)齊數(shù)。

5.? 結(jié)構(gòu)體傳參

1   struct S
2  {
3      int data[1000];
4      int num;
5  }
6
7    struct S s={{1,2,3,4},1000};
8   
9   //結(jié)構(gòu)體傳參
10   void print1(struct S s)
11  {
12     printf("%d\n",s.num);
13  }
14  //結(jié)構(gòu)體傳址調(diào)用
16   void print1(struct S *ps)
17  {
18     printf("%d\n",ps->num);
19  }
20
21   int main()
22  {
23      print1(s);
24      print2(&s);
25      retrun 0;
26  }

上面的 print1 和 print2 這兩個(gè)函數(shù)哪個(gè)好呢?

首選 print2函數(shù)。

  1. 函數(shù)傳參的時(shí)候,參數(shù)是需要壓棧,會(huì)有時(shí)間的空間的系統(tǒng)開(kāi)銷。
  2. 如果傳遞一個(gè)結(jié)構(gòu)體對(duì)象的時(shí)候,結(jié)構(gòu)體過(guò)大,參數(shù)壓棧的系統(tǒng)開(kāi)銷比較大,所以會(huì)導(dǎo)致性能的下降。

6.? 結(jié)構(gòu)體實(shí)現(xiàn)位段?

6.1.? 什么是位段?

位段的聲明和結(jié)構(gòu)是類似的,有兩個(gè)不同。

  1. 位段的成員必須是 int、unsigned int 或 signed int,在C99中位段成員的類型也可以選擇其他類型。
  2. 位段的成員名后邊有一個(gè)冒號(hào)和一個(gè)數(shù)字。

比如:

1   struct A
2   {
3       int _a:2;
4       int _b:5;
5       int _c:10;
6       int _d:30;
7    }

A就是一個(gè)位段類型。

那位段所占內(nèi)存的大小是多少呢?

6.2.? 位段的內(nèi)存分配

  1. 位段的成員可以是 int、signed int、unsigned int 或者 char 等類型。
  2. 位段的空間上是按照需要以4個(gè)字節(jié)(int)或者1個(gè)字節(jié)(char)的方式來(lái)開(kāi)辟的。
  3. 位段涉及很多不確定因素,位段是不跨平臺(tái)的,注重可移植的程序應(yīng)該避免使用位段。
  4. ?冒號(hào)后面的數(shù)指的是二進(jìn)制的比特位,例如,a后面的3,指的是把3轉(zhuǎn)換二進(jìn)制后只能存儲(chǔ)3個(gè)比特位。

    1  struct S
    2  {
    3      char a:3;
    4      char b:4;
    5      char c:5;
    6      char d:4;
    7  }
    8   struct S s={0};
    9   s.a=10;
    10  s.b=12;
    11  s.c=3;
    12  s.d=4;

6.3.? 位段的跨平臺(tái)問(wèn)題

  1. int 位段被當(dāng)做有符號(hào)數(shù)還是無(wú)符號(hào)數(shù)是不確定的。
  2. 位段中最大位的數(shù)目不能確定。(16位機(jī)器最大16,32位機(jī)器最大32,寫成27,在16位機(jī)器會(huì)出現(xiàn)問(wèn)題)
  3. 位段中的成員在內(nèi)存中從左向右分配,還是從右向左分配,標(biāo)準(zhǔn)尚未定義。
  4. 當(dāng)一個(gè)結(jié)構(gòu)包含兩個(gè)位段,第二個(gè)位段成員比較大,無(wú)法容納于第一個(gè)位段剩余的位時(shí),是舍棄剩余的位還是利用,這是不確定的。

【總結(jié)】 跟結(jié)構(gòu)相比,位段可以達(dá)到同樣的效果,并且可以很好的節(jié)省空間,但是有跨平臺(tái)問(wèn)題的存在。?

6.4.? 位段的應(yīng)用

在網(wǎng)絡(luò)協(xié)議中,IP數(shù)據(jù)報(bào)的格式,我們可以看到其中很多的屬性只需要幾個(gè)bit位就能描述,這里使用位段,能夠?qū)崿F(xiàn)想要的效果,也節(jié)省了空間,這樣網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)報(bào)大小也會(huì)較小一些,對(duì)網(wǎng)絡(luò)的暢通是有幫助的。

6.5.? 位段使用的注意事項(xiàng)

位段中幾個(gè)成員共用一個(gè)字節(jié),這樣有些成員的起始位置并不是某個(gè)字節(jié)的起始位置,那么這些位置處是沒(méi)有地址的。內(nèi)存中每個(gè)字節(jié)分配一個(gè)地址,一個(gè)字節(jié)內(nèi)部的bit位是沒(méi)有地址的。

所以不能對(duì)位段的成員使用&操作符,這樣就不能使用 scanf 直接給位段的成員輸入值,但是可以先輸入放在一個(gè)變量中,然后賦值給位段的成員。

1   struct A
2  {
3     int _a:3;
4     int _b:5;
5     int _c:3;
6     int _d:9;
7  }
8
9   int main()
10 {
11    struct A sa = {0};
12    scanf("%d",&sa._b);   //錯(cuò)誤示范
13    
14    //正確做法
15    int b = 0;
16    scanf("%d",&b);
17    sa._b = b;
18     return 0;
19  }

完——

Take Me Hand_DAISHI DANCE、Cécile Corbel_高音質(zhì)在線試聽(tīng)_Take Me Hand歌詞|歌曲下載_酷狗音樂(lè)酷狗音樂(lè)為您提供由DAISHI DANCE、Cécile Corbel演唱的高清音質(zhì)無(wú)損Take Me Handmp3在線聽(tīng),聽(tīng)Take Me Hand,只來(lái)酷狗音樂(lè)!icon-default.png?t=N7T8https://t3.kugou.com/song.html?id=cAisdc4COV2

?————————————————Take Me Hand?————————————————

? 期待我們下一次的相遇!再見(jiàn)——?

http://m.risenshineclean.com/news/60068.html

相關(guān)文章:

  • 廣東省路橋建設(shè)有限公司網(wǎng)站泉州seo按天收費(fèi)
  • 免費(fèi)制作的企業(yè)網(wǎng)站云南seo簡(jiǎn)單整站優(yōu)化
  • 福田區(qū)做網(wǎng)站公司青島做網(wǎng)站的公司哪家好
  • 個(gè)人網(wǎng)站建設(shè)方案模板線上銷售渠道有哪幾種
  • 微信對(duì)接網(wǎng)站寶雞百度seo
  • 樂(lè)山網(wǎng)站seo營(yíng)銷網(wǎng)站建設(shè)都是專業(yè)技術(shù)人員
  • 微信公眾號(hào)網(wǎng)站導(dǎo)航怎么做喬拓云智能建站官網(wǎng)
  • 單頁(yè)網(wǎng)站做淘寶客免費(fèi)的行情網(wǎng)站
  • 電子商務(wù)網(wǎng)站建設(shè)規(guī)劃書實(shí)例灰色詞快速上排名
  • 樹(shù)狀結(jié)構(gòu)的網(wǎng)站開(kāi)網(wǎng)店哪個(gè)平臺(tái)靠譜
  • 火烈鳥(niǎo)門戶網(wǎng)站開(kāi)發(fā)企業(yè)培訓(xùn)體系搭建
  • 遼寧seo站內(nèi)優(yōu)化合肥seo排名扣費(fèi)
  • 網(wǎng)站優(yōu)化百度百度官網(wǎng)下載安裝免費(fèi)
  • 杭州小型網(wǎng)站建設(shè)服務(wù)關(guān)鍵詞排名代做
  • 幼兒園大班主題網(wǎng)絡(luò)圖臺(tái)州百度快照優(yōu)化公司
  • 增城做網(wǎng)站站長(zhǎng)之家seo查找
  • dede手機(jī)網(wǎng)站模板下載優(yōu)化是什么意思?
  • 做企業(yè)網(wǎng)站價(jià)格注冊(cè)網(wǎng)址
  • 8080端口做網(wǎng)站網(wǎng)絡(luò)營(yíng)銷的常用方法
  • 政府網(wǎng)站集約化建設(shè)項(xiàng)目廊坊seo排名
  • 長(zhǎng)春網(wǎng)站排名公司最新新聞事件今天
  • .中國(guó)域名的網(wǎng)站網(wǎng)站百度收錄突然消失了
  • 哈爾濱智能建站模板網(wǎng)站統(tǒng)計(jì)系統(tǒng)
  • 電子商務(wù)都學(xué)什么英文seo兼職
  • 北京正規(guī)網(wǎng)站建設(shè)公司百度助手安卓版下載
  • 外國(guó)大氣網(wǎng)站設(shè)計(jì)谷歌首頁(yè)
  • 企業(yè)信息管理系統(tǒng)免費(fèi)小吳seo博客
  • 網(wǎng)頁(yè)瀏覽器阻止安裝activex控件惠州seo排名外包
  • 網(wǎng)站要怎么做才能獲得市場(chǎng)份額百度開(kāi)戶返點(diǎn)
  • 深圳網(wǎng)絡(luò)做網(wǎng)站百度指數(shù)在線查詢