在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)之C語(yǔ)言-4.3結(jié)構(gòu)體

            51單片機(jī)之C語(yǔ)言-4.3結(jié)構(gòu)體

            作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
            既然既然相同長(zhǎng)度單元格能放在一起,比如char1,char2,char3; int1,int2,int3; long1,long2,long3.在實(shí)際使用中,有些變量長(zhǎng)度是不一樣的,但由于它們之間相互關(guān)聯(lián)也需要放在一起,那么要是不同長(zhǎng)度的變量,想放在一起有沒有辦法呢?當(dāng)然可以,這個(gè)就叫做結(jié)構(gòu)體?,F(xiàn)在按照數(shù)組的學(xué)習(xí)方法來(lái)研究結(jié)構(gòu)體,兩個(gè)問題,如何定義;如何訪問結(jié)構(gòu)體成員。

            (1) 如何定義一個(gè)結(jié)構(gòu)體

            本文引用地址:http://www.biyoush.com/article/201611/319552.htm

            定義一個(gè)結(jié)構(gòu)的一般形式為:

            struct結(jié)構(gòu)名

            {成員表列};

            成員表列由若干個(gè)成員組成,每個(gè)成員都是該結(jié)構(gòu)的一個(gè)組成部分。對(duì)每個(gè)成員也必須作類型說明,其形式為:

            類型說明符成員名;

            成員名的命名應(yīng)符合標(biāo)志符的書寫規(guī)定。例如:

            struct stu

            {

            int num;

            char name[20];

            char sex;

            float score;

            }

            由以上可見,通過struct來(lái)定義一個(gè)結(jié)構(gòu)體名,然后描述這個(gè)結(jié)構(gòu)體中各個(gè)成員。struct stu類似于int或者char.為什么這么講呢?我們來(lái)看看char是什么,char就是固定化的存儲(chǔ)空間,一個(gè)字節(jié),int就是固定的兩個(gè)字節(jié)。我們知道變量是多樣化的,現(xiàn)在我需要的變量既不是int 也不是char,而是int和char的綜合,那怎么辦?這個(gè)就是結(jié)構(gòu)體了。簡(jiǎn)單的講,int,char是固定好的存儲(chǔ)空間劃分,struct stu是自定義存儲(chǔ)空間劃分。類似于很多軟件中有默認(rèn)的設(shè)置,還有自定義設(shè)置。了解這點(diǎn),我們來(lái)看看如何定義結(jié)構(gòu)體變量:

            先來(lái)深入了解一下前面我們是怎么定義變量的?比如char mystring, int mydata.這個(gè)是先劃分存儲(chǔ)空間然后,再給這個(gè)空間命名。比如char先要一個(gè)一個(gè)字節(jié)的單元格,然后給這個(gè)字節(jié)取個(gè)名字叫mystring,同樣int就是先要2個(gè)字節(jié)的單元格,然后給這兩個(gè)字節(jié)取個(gè)名字叫mydata. 同樣對(duì)于結(jié)構(gòu)體變量,我們先要一個(gè)存儲(chǔ)空間,然后給這個(gè)空間取個(gè)名字。這個(gè)存儲(chǔ)空間可以任意由你定義。比如struct stu.然后給這個(gè)空間取個(gè)名字,比如boy1.因此我們就知道了如何定義一個(gè)結(jié)構(gòu)體變量。與其他變量并無(wú)區(qū)別。

            struct stu boy1,boy2;等等。這里小結(jié)一下,結(jié)構(gòu)體變量定義一共有三種方法:

            1)先定義結(jié)構(gòu),再說明結(jié)構(gòu)變量

            struct stu

            {

            int num;

            char name[20];

            char sex;

            float score;

            }

            struct stu boy1,boy2;

            2) 在定義結(jié)構(gòu)類型的同時(shí)說明結(jié)構(gòu)變量

            struct stu

            {

            int num;

            char name[20];

            char sex;

            float score;

            }boy1,boy2;

            3)直接說明結(jié)構(gòu)變量

            struct

            {

            int num;

            char name[20];

            char sex;

            float score;

            }boy1,boy2;

            第3種方法中省去了結(jié)構(gòu)名。

            (2)結(jié)構(gòu)變量的初始化

            和其他類型變量一樣,對(duì)結(jié)構(gòu)變量可以在定義時(shí)進(jìn)行初始化賦值。

            那么結(jié)構(gòu)體的成員能否為數(shù)組?當(dāng)然可以。我們來(lái)看看如何在結(jié)構(gòu)體成員中讓某個(gè)成員為數(shù)組

            struct mystruct {

            int age;

            int score;

            char sex;

            char myarry[3];

            };

            struct mystruct boy1;

            void main(void)

            {

            boy1.myarry[0]=4;

            boy1.myarry[1]=2;

            boy1.myarry[2]=3;

            }

            這中方法是通過給數(shù)組的成員一個(gè)一個(gè)賦值

            (3) 結(jié)構(gòu)體成員的訪問

            那么如何訪問結(jié)構(gòu)體中的成員呢?我們?cè)L問數(shù)組的時(shí)候,比如數(shù)組a[4],我要訪問第三個(gè)成員,那么直接使用a[2],就可以了。那么訪問結(jié)構(gòu)體成員,使用結(jié)構(gòu)體變量加成員名,比如:

            boy1.num

            boy2.name

            boy1.birthday.month

            與普通變量完全相同。

            #include "reg52.h"

            typedef unsigned char uchar;

            void delayUs(uchar t);

            void delayMs(uchar t);

            void main (void)

            {

            struct MyStruct

            {

            uchar DATA0;

            uchar DATA1;

            uchar DATA2;

            uchar DATA3;

            uchar DATA4;

            uchar DATA5;

            uchar DATA6;

            uchar DATA7;

            };

            struct MyStruct MyData;

            MyData.DATA0=0xfe;//點(diǎn)亮第1個(gè)LED

            MyData.DATA1=0xfd;//點(diǎn)亮第2個(gè)LED燈

            MyData.DATA2=0xfb;//點(diǎn)亮第3個(gè)LED燈

            MyData.DATA3=0xf7;//點(diǎn)亮第4個(gè)LED燈

            MyData.DATA4=0xef;//點(diǎn)亮第5個(gè)LED燈

            MyData.DATA5=0xdf;//點(diǎn)亮第6個(gè)LED燈

            MyData.DATA6=0xbf;//點(diǎn)亮第7個(gè)LED燈

            MyData.DATA7=0x7f;//點(diǎn)亮第8個(gè)LED燈

            while(1)

            {

            P1=MyData.DATA0;//點(diǎn)亮第1個(gè)LED燈

            delayMs(100);

            P1=MyData.DATA1;//點(diǎn)亮第2個(gè)LED燈

            delayMs(100);

            P1=MyData.DATA2;//點(diǎn)亮第3個(gè)LED燈

            delayMs(100);

            P1=MyData.DATA3;//點(diǎn)亮第4個(gè)LED燈

            delayMs(100);

            P1=MyData.DATA4;//點(diǎn)亮第5個(gè)LED燈

            delayMs(100);

            P1=MyData.DATA5;//點(diǎn)亮第6個(gè)LED燈

            delayMs(100);

            P1=MyData.DATA6;//點(diǎn)亮第7個(gè)LED燈

            delayMs(100);

            P1=MyData.DATA7;//點(diǎn)亮第8個(gè)LED燈

            delayMs(100);

            }

            }

            void delayUs(uchar t)

            {

            while(--t);

            }

            void delayMs(uchar t)

            {

            while(--t)

            {

            delayUs(245);

            delayUs(245);

            }

            }



            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉