Liên Mạng VietNam || GiaiTri.com | GiaiTriLove.com | GiaiTriChat.com | LoiNhac.com | Đăng Nhập | Gia Nhập |
trong đó model_name là tên của mẫu kiểu dữ liệu và tham số tùy chọn object_name một tên hợp lệ cho đối tượng. Bên trong cặp ngoặc nhọn là tên các phần tử của cấu trúc và kiểu của chúng.struct model_name {
type1 element1;
type2 element2;
type3 element3;
.
.
} object_name;
Chúng ta đã định nghĩa cấu trúc products với hai trường: name và price, mỗi trường có một kiểu khác nhau. Chúng ta cũng đã sử dụng tên của kiểu cấu trúc (products) để khai báo ba đối tượng có kiểu đó : apple, orange và melon.struct products {
char name [30];
float price;
} ;
products apple;
products orange, melon;
Hơn nữa, trong trường hợp này tham số model_name trở thành tuỳ chọn. Mặc dù nếu model_name không được sử dụng thì chúng ta sẽ không thể khai báo thêm các đối tượng có kiểu mẫu này.struct products {
char name [30];
float price;
} apple, orange, melon;
mỗi trường có kiểu dữ liệu tương ứng: apple.name, orange.name và melon.name có kiểu char[30], và apple.price, orange.price và melon.price có kiểu float.apple.name
apple.price
orange.name
orange.price
melon.name
melon.price
#include <iostream.h> #include <string.h> #include <stdlib.h> struct movies_t { char title [50]; int year; } mine, yours; void printmovie (movies_t movie); int main () { char buffer [50]; strcpy (mine.title, "2001 A Space Odyssey"); mine.year = 1968; cout << "Enter title: "; cin.getline (yours.title,50); cout << "Enter year: "; cin.getline (buffer,50); yours.year = atoi (buffer); cout << "My favourite movie is: "; printmovie (mine); cout << "And yours: "; printmovie (yours); return 0; } void printmovie (movies_t movie) { cout << movie.title; cout << " (" << movie.year << ") "; } | Enter title: Alien Enter year: 1979 My favourite movie is: 2001 A Space Odyssey (1968) And yours: Alien (1979) |
#include <iostream.h> #include <stdlib.h> #define N_MOVIES 5 struct movies_t { char title [50]; int year; } films [N_MOVIES]; void printmovie (movies_t movie); int main () { char buffer [50]; int n; for (n=0; n<N_MOVIES; n++) { cout << "Enter title: "; cin.getline (films[n].title,50); cout << "Enter year: "; cin.getline (buffer,50); films[n].year = atoi (buffer); } cout << " You have entered these movies: "; for (n=0; n<N_MOVIES; n++) printmovie (films[n]); return 0; } void printmovie (movies_t movie) { cout << movie.title; cout << " (" << movie.year << ") "; } | Enter title: Alien Enter year: 1979 Enter title: Blade Runner Enter year: 1982 Enter title: Matrix Enter year: 1999 Enter title: Rear Window Enter year: 1954 Enter title: Taxi Driver Enter year: 1975 You have entered these movies: Alien (1979) Blade Runner (1982) Matrix (1999) Rear Window (1954) Taxi Driver (1975) |
Ở đây amovie là một đối tượng có kiểu movies_t và pmovie là một con trỏ trỏ tới đối tượng movies_t. OK, bây giờ chúng ta sẽ đến với một ví dụ khác, nó sẽ giới thiệu một toán tử mới:struct movies_t {
char title [50];
int year;
};
movies_t amovie;
movies_t * pmovie;
#include <iostream.h> #include <stdlib.h> struct movies_t { char title [50]; int year; }; int main () { char buffer[50]; movies_t amovie; movies_t * pmovie; pmovie = & amovie; cout << "Enter title: "; cin.getline (pmovie->title,50); cout << "Enter year: "; cin.getline (buffer,50); pmovie->year = atoi (buffer); cout << " You have entered: "; cout << pmovie->title; cout << " (" << pmovie->year << ") "; return 0; } | Enter title: Matrix Enter year: 1999 You have entered: Matrix (1999) |
nó có thể được dịch thành:
movies->title
cả hai biểu thức movies->title và (*movies).title đều hợp lệ và chúng đều dùng để tham chiếu đến phần tử title của cấu trúc được trỏ bởi movies. Bạn cần phân biệt rõ ràng với:
(*movies).title
nó tương đương với
*movies.title
lệnh này dùng để tính toán giá trị được trỏ bởi phần tử title của cấu trúc movies, trong trường hợp này (title không phải là một con trỏ) nó chẳng có ý nghĩa gì nhiều. Bản dưới đây tổng kết tất cả các kết hợp có thể được giữa con trỏ và cấu trúc:
*(movies.title)
Biểu thức Mô tả Tương đương với movies.title Phần tử title của cấu trúc movies movies->title Phần tử title của cấu trúc được trỏ bởi movies (*movies).title *movies.title Giá trị được trỏ bởi phần tử title của cấu trúc movies *(movies.title)
Vì vậy, sau phần khai báo trên chúng ta có thể sử dụng các biểu thức sau:struct movies_t {
char title [50];
int year;
}
struct friends_t {
char name [50];
char email [50];
movies_t favourite_movie;
} charlie, maria;
friends_t * pfriends = &charlie;
(trong đó hai biểu thức cuối cùng là tương đương).
charlie.name
maria.favourite_movie.title
charlie.favourite_movie.year
pfriends->favourite_movie.year