中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
c語言學(xué)習(xí)筆記(八:struct、union、enum、typedef

自定義數(shù)據(jù)類型

1.struct

1)結(jié)構(gòu)體的聲明

聲明結(jié)構(gòu)體變量;結(jié)構(gòu)體所占內(nèi)存大小是其成員所占內(nèi)存之和。

struct 結(jié)構(gòu)體類型名{//結(jié)構(gòu)體類型名可省略,匿名結(jié)構(gòu)體    成員表;//可以有多個成員函數(shù);//可以有也可以沒有}結(jié)構(gòu)變量量表 [={}];//同時定義多個變量“,”隔開,最后的“;”不能漏??梢栽诼暶鞯耐瑫r初始化。    訪問成員的一般形式是:結(jié)構(gòu)變量名 . 成員名 

初始化

對結(jié)構(gòu)體的成員逐個賦值

stu1.num = 18;stu1.score = 90.5;

可以對結(jié)構(gòu)體進(jìn)行整體賦值

stu2 = (struct Student){"Tom", 15, 88.0};

結(jié)構(gòu)體變量的初始化也可以與定義同時:

struct Student{                 //聲明結(jié)構(gòu)體 Student    char name[20];                   int num;                        float score;                 }stu = {"Mike", 15, 91};        //注意初始化值的類型和順序要與結(jié)構(gòu)體聲明時成員的類型和順序一致

可以部分初始化:

struct Student stu4 = {.name = "Lisa"};1

也可以按照任意的順序使用指定初始化項(xiàng)目:

    struct Student st = { .name = "Smith",                          .score = 90.5,                          .num = 18 };

2)、結(jié)構(gòu)體變量的存儲原理

1)結(jié)構(gòu)體數(shù)據(jù)成員對齊的意義

……

2)結(jié)構(gòu)體大小的計算方法和步驟

……

3)#pragma pack宏

……

另行了解

3)結(jié)構(gòu)體數(shù)組

定義

struct Student{                 //聲明結(jié)構(gòu)體 Student    char name[20];    int num;    float score;}stu[5];                        //定義一個結(jié)構(gòu)結(jié)構(gòu)數(shù)組stu,共有5個元素

初始化

定義結(jié)構(gòu)數(shù)組的同時進(jìn)行初始化

struct Student stu[2] = {{"Mike", 27, 91},{"Tom", 15, 88.0}};  

整體賦值:

stu[2] = (struct Student){"Jack", 12, 85.0};

結(jié)構(gòu)體變量的成員逐個賦值:

strcpy(stu[3].name, "Smith");stu[3].num = 18;stu[3].score = 90.5;

2.union

聲明聯(lián)合數(shù)據(jù)類型變量。多個成員共用一塊內(nèi)存。在編譯時會選取成員中長度最長的來聲明。所有的數(shù)據(jù)成員具有相同的起始地址。一個union只配置一個足夠大的空間來容納最大長度的數(shù)據(jù)成員。

union a { //聲明了三個成員,但是長度不一(后面sizeof的結(jié)果不同機(jī)器結(jié)果不同,但double肯定是最長的),于是編譯器會選取double的長的作為union a的長度    int a1;    // sizeof(int) = 4    float a2;  // sizeof(float) = 8    double a3; // sizeof(double) = 16};

聲明與struct相似,替換一下struct聲明中的關(guān)鍵字就可了

3.enum

enum變量類型還可以給其中的常量符號賦值,如果不賦值則會從被賦初值的那個常量開始依次加1,如果都沒有賦值,他們的值從0開始依次遞增1.

聲明

enum 枚舉類型{枚舉成員列表}; //其中的枚舉成員列表是以逗號“,”相分隔eg:enum Spectrum{red,balck,yellow,blue,white};

可以用“枚舉類型”聲明符號名稱來表示int型常量。只要是能使用int型的地方就能夠使用枚舉類型。注意:C語言中的枚舉的一些特性不適合C ;比如c中的枚舉變量允許使用 運(yùn)算符,但是c 中則不允許。

enum Spectrum{red,black,yellow,blue,white};                   0    1     2     3     4                        可以在枚舉聲明中,可以為枚舉常量指定整數(shù)值:如enum Spectrum{ red=10, black=20, yellow=30,blue=40, white=50 };可在枚舉類型成員列表中,聲明多個成員的數(shù)值(整型常量值)相同, 如:enum Spectrum{ red, black=22, yellow, blue = 22, white };則: red = 0, black = 22, yellow = 23, blue = 22 white = 23.

匿名的enum枚舉

enum {FALSE,TRUE};//FALSE 0, TRUE 1

輸出12個月的英文單詞

#include<stdio.h>#include <stdlib.h>enum Months{jan=1,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec};int main(void)  {  enum Months m;    //flag用來標(biāo)記輸出的個數(shù),若為4個,則輸出一個換行符  int flag=0;      //指針數(shù)組,存放的是個字符串的入口地址  char *months[]={"January","February","March","April","May","June",        "July","August","September","October","November","December"};  for (m=jan;m<=dec;m  )  {    printf ("%-d月份:%-10s ",m,months[m-1]);    flag  ;    if (flag%4==0)    {      putchar('\n');    }  }  system ("pause");  return 0;  }

4.typedef

用以給數(shù)據(jù)類型取名

1)與#define的區(qū)別

typedef有點(diǎn)像#define宏,其實(shí)際類型替代同義字。不同點(diǎn)是typedef在編譯時被解釋,因此讓編譯器來應(yīng)付超越預(yù)處理器能力的文本替換。

聲明一個指向字符變量的指針和一個字符變量

typedef char* pchar;pchar pa,pb;

簡化結(jié)構(gòu)體

struct tagPOINT1 {    int x;    int y;};struct tagPOINT1 p1;typedef struct tagPOINT {    int x;    int y;}POINT;POINT p1;//可以這樣;struct tagPOINT p2;//也可以這樣;

5.extern

在其中一個c文件中定義一個全局變量key,然后在另一個要使用key這個變量的c文件中使用extern關(guān)鍵字聲明一次,說明這個變量為外部變量,是在其他的c文件中定義的全局變量。

  1. extern修飾變量的聲明。
  2. extern修飾函數(shù)聲明。
  3. extern修飾符可用于指示C或者C++函數(shù)的調(diào)用規(guī)范。

(1)main.c文件

#include "common.h"   unsigned char key; int p(void) {     printf("%d\n",i);         return 0;       }

(2)common.c文件

#include "common.h"   extern unsigned char key;int main() {     p();     system("pause");         return 0;      }
來源:https://www.icode9.com/content-4-792151.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
結(jié)構(gòu)struct 聯(lián)合Union和枚舉Enum的細(xì)節(jié)討論
typedef 和 struct相關(guān)全解
【C語言筆記】結(jié)構(gòu)體
《C語言程序設(shè)計教程(第4版)》第10章結(jié)構(gòu)體與共用體
C語言程序設(shè)計案例式教程-第9章 結(jié)構(gòu)體
C語言結(jié)構(gòu)體用法很多,坑也很多
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服