程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 講授C++中的列舉類型和聲明新類型的辦法

講授C++中的列舉類型和聲明新類型的辦法

編輯:關於C++

講授C++中的列舉類型和聲明新類型的辦法。本站提示廣大學習愛好者:(講授C++中的列舉類型和聲明新類型的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是講授C++中的列舉類型和聲明新類型的辦法正文


C++列舉類型
假如一個變量只要幾種能夠的值,可以界說為列舉(enumeration)類型。所謂“列舉”是指將變量的值逐個羅列出來,變量的值只能在羅列出來的值的規模內。聲明列舉類型用enum開首。例如:

  enum weekday{sun, mon, tue, wed, thu, fri, sat};

下面聲清楚明了一個列舉類型weekday,花括號中sun, mon, …, sat等稱為列舉元素或列舉常量。表現這個類型的變量的值只能是以上7個值之一。它們是用戶本身界說的標識符。

聲明列舉類型的普通情勢為:

  enum 列舉類型名{列舉常量表列};

在聲清楚明了列舉類型以後,可以用它來界說變量。如:

  weekday workday,week_end;

如許,workday和week_end被界說為列舉類型weekday的變量。

在C說話中,列舉類型名包含症結字enum,以上的界說可以寫為:

  enum weekday workday,week_end;

在C++中許可不寫enum,普通也不寫enum,但保存了C的用法。依據以上對列舉類型weekday的聲明,列舉變量的值只能是sun到sat之一。例如:

  workday=mon; week_end=sun;

是准確的。也能夠直接界說列舉變量,如:

  enum{sun, mon, tue, wed, thu, fri, sat} workday,week_end;

這些標識符其實不主動地代表甚麼寄義。

對列舉類型的幾點解釋:
對列舉元素按常量處置,故稱列舉常量。
列舉元素作為常量,它們是有值的,C++編譯按界說時的次序對它們賦值為0,1,2,3,…。也能夠在聲明列舉類型時另行指定列舉元素的值。
列舉值可以用來做斷定比擬。
一個整數不克不及直接賦給一個列舉變量。

【例】口袋中有紅、黃、藍、白、黑5種色彩的球若干個。每次從口袋中隨意率性掏出3個球,問獲得3種分歧色彩的球的能夠取法,輸入每種分列的情形。

#include <iostream>
#include <iomanip>//在輸入時要用到setw掌握符
using namespace std;
int main( )
{
  enum color {red,yellow,blue,white,black}; //聲明列舉類型color
  color pri; //界說color類型的變量pri
  int i,j,k,n=0,loop; //n是累計分歧色彩的組合數
  for (i=red;i<=black;i++) //當i為某一色彩時
   for (j=red;j<=black;j++) //當j為某一色彩時
     if (i!=j) //若前兩個球的色彩分歧
     {
      for (k=red;k<=black;k++) //只要前兩個球的色彩分歧,才須要檢討第3個球的色彩
        if ((k!=i) && (k!=j)) //3個球的色彩都分歧
        {
         n=n+1;//使累計值n加1
         cout<<setw(3)<<n; //輸入以後的n值,字段寬度為3
         for (loop=1;loop<=3;loop++) //前後對3個球作處置
         {
           switch (loop) //loop的值前後為1,2,3
           {
             case 1: pri=color(i);break ; //color(i)是強迫類型轉換,使pri的值為i
             case 2: pri=color(j);break ; //使pri的值為j
             case 3: pri=color(k);break ; //使pri的值為k
             default :break ;
      }
      switch (pri)//斷定pri的值,輸入響應的“色彩”
      {
        case red: cout<<setw(8)<<"red"; break;
        case yellow: cout<<setw(8)<<"yellow";break;
        case blue:cout<<setw(8)<<"blue"; break ;
        case white:cout<<setw(8)<<"white"; break ;
        case black:cout<<setw(8)<<"black"; break ;
        default : break ;
      }
     }
     cout<<endl;
   }
  }
  cout<<"total:"<<n<<endl; //輸入相符前提的組合的個數
  return 0;
}

運轉成果以下:

1 red yellow blue 2 red yellow white 3 red yellow black
┆
┆
┆
58 black white red
59 black white yellow
60 black white blue
total:60

不消列舉常量,而用常數0代表“紅”,1代表“黃”……也能夠。但明顯用列舉變量更直不雅,由於列舉元素都選用了使人“見名知意”的標識符,並且列舉變量的值限制在界說時規 定的幾個列舉元素規模假如付與它一個其他的值,就會湧現失足信息,便於檢討。

C++ typedef 聲明新類型
在C++中,除可以聲明構造體、共用體、列舉等類型外,還可以用typedef聲明一個新的類型名來取代已有的類型如:

  •     typedef int INTEGER;  //指定用標識符INTEGER代表int類型
  •     typedef float REAL;  //指定用REAL代表float類型

如許,以下兩行等價:

  •     int i,j; float a,b;
  •     INTEGER i,j; REAL a,b;

如許可使熟習FORTRAN的人能用INTEGER和REAL界說變量,以順應他們的習氣。

假如在一個法式中,整型變量是專門用來計數的,可以用COUNT來作為整型類型名:

  typedef int COUNT; //指定用COUNT代表int型
  COUNT i,j; //將變量i,j界說為COUNT類型

即int類型在法式中將變量i, j界說為COUNT類型,可使人更了如指掌地曉得它們是用於計數的。

也能夠聲明構造體類型:

typedef struct //留意在struct之前用了症結字typedef,表現是聲明新名
{
  int month; int day; int year;
}DATE; //留意DATE是新類型名,而不是構造體變量名

所聲明的新類型名DATE代表下面指定的一個構造體類型。如許便可以用DATE界說變量:
    DATE birthday; DATE *p;  //p為指向此構造體類型數據的指針
還可以進一步:

typedef int NUM[100]; //聲明NUM為整型數組類型,包括100個元素
NUM n; //界說n為包括100個整型元素的數組
typedef char *STRING; //聲明STRING為字符指針類型
STRING p,s[10]; //p為字符指針變量,s為指針數組(有10個元素)
typedef int (*POINTER)( ) //聲明POINTER為指向函數的指針類型,函數前往整型值
POINTER p1, p2; // p1,p2為POINTER類型的指針變量

歸結起來,聲明一個新的類型名的辦法是:

  • 先按界說變量的辦法寫出界說語句(如int i;)。
  • 將變量名換成新類型名(如將i換成COUNT)。
  • 在最後面加typedef(如typedef int COUNT)。
  • 然後可以用新類型名去界說變量。

再以聲明上述的數組類型為例來講明:

  • 先按界說數組情勢書寫: int n[100];
  • 將變量名n換成本身指定的類型名:int NUM[100];
  • 在後面加上typedef,獲得 typedef int NUM[100];
  • 用來界說變量: NUM n;(n是包括100個整型元素的數組)。

習氣上常把用typedef聲明的類型名用年夜寫字母表現,以便與體系供給的尺度類型標識符相差別。

關於typedef的幾點解釋:

  • typedef可以聲明各類類型名,但不克不及用來界說變量。用typedef可以聲明數組類型、字符串類型,應用比擬便利。
  • 用typedef只是對曾經存在的類型增長一個類型名,而沒有發明新的類型。
  • 當在分歧源文件頂用到統一類型數據(特別是像數組、指針、構造體、共用體等類型數據)時,經常使用typedef聲明一些數據類型,把它們零丁放在一個頭文件中,然後在須要用到它們的文件頂用#include敕令把它們包括出去,以進步編程效力。
  • 應用typedef有益於法式的通用與移植。有時法式會依附於硬件特征,用typedef便於移植。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved