Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Các unions vô danh






Trong C++ chú ng ta có thể sử dụ ng cá c unions vô danh. Nế u chú ng ta đ ặ t mộ t union trong mộ t cấ u trú c mà khô ng đ ề tê n (phầ n đ i sau cặ p ngoặ c nhọ n { }) union sẽ trở thà nh vô danh và chú ng ta có thể truy xuấ t trự c tiế p đ ế n cá c phầ n tử củ a nó mà khô ng cầ n đ ế n tê n củ a union (có cầ n cũ ng khô ng đ ư ợ c). Ví dụ, hã y xem xé t sự khá c biệ t giữ a hai phầ n khai bá o sau đ â y:

union union vô danh
struct { char title[50]; char author[50]; union { float dollars; int yens; } price; } book; struct { char title[50]; char author[50]; union { float dollars; int yens; }; } book;

Sự khá c biệ t duy nhấ t giữ a hai đ oạ n mã nà y là trong đ oạ n mã đ ầ u tiê n chú ng ta đ ặ t tê n cho union ( price ) cò n trong cá i thứ hai thì khô ng. Khi truy nhậ p và o cá c phầ n tử dollars yens , trong trư ờ ng hợ p thứ nhấ t chú ng ta viế t:

book.price.dollars
book.price.yens

cò n trong trư ờ ng hợ p thứ hai:

book.dollars
book.yens

Mộ t lầ n nữ a tô i nhắ c lạ i rằ ng vì nó là mộ t union, hai trư ờ ng dollars yens đ ề u chiế m cù ng mộ t chỗ trong bộ nhớ nê n chú ng khô ng thể giữ hai giá trị khá c nhau.

Kiể u liệ t kê (enum)

Kiể u dữ liệ u liệ t kê dù ng đ ể tạ o ra cá c kiể u dữ liệ u chứ a mộ t cá i gì đ ó hơ i đ ặ c biệ t mộ t chú t, khô ng phả i kiể u số hay kiể u kí tự hoặ c cá c hằ ng true false . Dạ ng thứ c củ a nó như sau:

enum model_name { value1, value2, value3 ,..} object_name;

Ví dụ, chú ng ta có thể tạ o ra mộ t kiể u dữ liệ u mớ i có tê n color đ ể lư u trữ cá c mà u vớ i phầ n khai bá o như sau:

enum colors_t {black, blue, green, cyan, red, purple, yellow, white};

Chú ý rằ ng chú ng ta khô ng sử dụ ng bấ t kì mộ t kiể u dữ liệ u cơ bả n nà o trong phầ n khai bá o. Chú ng ta đ ã tạ o ra mộ t kiể u dữ liệ u mớ i mà khô ng dự a trê n bấ t kì kiể u dữ liệ u nà o có sẵ n: kiể u color_t , nhữ ng giá trị có thể củ a kiể u color_t đ ư ợ c viế t trong cặ p ngoặ c nhọ n {}. Ví dụ, sau khi khai bá o kiể u liệ t kê, biể u thứ c sau sẽ là hợ p lệ:

colors_t mycolor;

mycolor = blue;
if (mycolor == green) mycolor = red;

Trê n thự c tế kiể u dữ liệ u liệ t kê đ ư ợ c dị ch là mộ t số nguyê n và cá c giá trị củ a nó là cá c hằ ng số nguyê n đ ư ợ c chỉ đ ị nh. Nế u đ iề u nà y khô ng đ ự oc chỉ đ ị nh, giá trị nguyê n tư ơ ng đ ư ơ ng vớ i phầ n tử đ ầ u tiê n là 0 và cá c giá trị tiế p theo cứ thế tă ng lê n 1, Vì vậ y, trong kiể u dữ liệ u colors_t mà chú ng ta đ ị nh nghĩ a ở trê n, white tư ơ ng đ ư ơ ng vớ i 0 , blue tư ơ ng đ ư ơ ng vớ i 1 , green tư ơ ng đ ư ơ ng vớ i 2 và cứ tiế p tụ c như thế.

Nế u chú ng ta chỉ đ ị nh mộ t giá trị nguyê n cho mộ t giá trị nà o đ ó củ a kiể u dữ liệ u liệ t kê (trong ví dụ nà y là phầ n tử đ ầ u tiê n) cá c giá trị tiế p theo sẽ là cá c giá trị nguyê n tiế p theo, ví dụ:

enum months_t { january=1, february, march, april, may, june, july, august, september, october, november, december} y2k;

trong trư ờ ng hợ p nà y, biế n y2k có kiể u dữ liệ u liệ t kê months_t có thể chứ a mộ t trong 12 giá trị từ january đ ế n december và tư ơ ng đ ư ơ ng vớ i cá c giá trị nguyê n từ 1 đ ế n 12 , khô ng phả i 0 đ ế n 11 vì chú ng ta đ ã đ ặ t january bằ ng 1

Nguồ n internet






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.