程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言學習筆記--枚舉&結構體,語言學習--枚舉

C語言學習筆記--枚舉&結構體,語言學習--枚舉

編輯:關於C語言

C語言學習筆記--枚舉&結構體,語言學習--枚舉


  • 枚舉

枚舉是一種用戶定義的數據類型,它用關鍵字enum以如下語法格式來聲明:

  enum 枚舉類型名字 {名字0,名字1,。。。,名字n};

枚舉類型名字通常並不真的使用,要用的是大括號裡面的名字,因為它們就是常量符號,它們的類型是int,值則依次從0到n。

  如:enum color{red,yellow,green};

就創建了3個常量,red的值是0,yellow的值是1,green的值是2。

當需要一些可以排列起來的常量值時,定義枚舉的意思就是給這些常量值名稱。

枚舉量可以作為值;

枚舉類型可以加上enum作為類型;但實際是以整數來計算和輸入輸出的。

#include<stdio.h>
enum color{ red, yellow, green,Numcolors};//此處Numcolors為小套路,數值剛好等於定義的枚舉量,可以定義數組,遍歷數組等使用。
void f(enum color c);//此處enum必須帶上
int main(void)
{
        enum color t = red;//枚舉類型可以加上enum作為類型
        scanf("%d",&t);
        f(t);

        return 0;
}

void f(enum color c)
{
        printf("%d\n%,c);
}

枚舉量

聲明枚舉量的時候可以指定值,如

  

enum COLOR {RED = 1, YELLOW,GREEN = 5};//RED = 1是從1開始的,不是從0
                                                                         //YELLOW =2
                                                                        //GREEN = 5

枚舉只是int,即使給枚舉類型的變量賦不存在的值,也沒有任何warning和error。

雖然枚舉類型可以當做類型用,但是很少用。

如果有意義上排比的名字,用枚舉比用const int方便。

枚舉比宏好,因為枚舉有int類型。

  •  結構
#include<stdio.h>
int main(int grc,char *grv[])
{
        struct date {
        int month;
        int day;
        int year;
        };
        struct date today;
        today.month = 07;
        today.day = 31;
        today.year = 2014;

        printf("Today's date is %i-%i-%i\n",today.month,today.day,today.year);

        return 0;
}

和本地變量一樣:在函數內部聲明的結構變量只能在函數內部使用;在函數外聲明的結構變量可以在所有函數使用。

所以通常在函數外部聲明結構變量,這樣可以在多個函數使用。

 結構變量的初始化

struct date day = {07,31,2014};//第一種初始化方法
struct Thismonth = {.month = 07,.year = 2014};//第二種初始化方法。未指定為0

結構變量的成員

結構和數組有點像

數組用【】運算符和下標訪問其成員

結構用 .運算符和名字訪問其成員

  today.day

要訪問整個結構,直接用結構變量的名字

對於整個結構,可以賦值,取地址,也可以傳遞給函數參數

p1 = (struct point){5,10};  ----> p1.x = 5; p2.y = 10;

p1 = p2;  ---->相當於p1.x = p2.x; p1.y = p2.y

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved