Truy cập đến các thành phần của cấu trúc:

Một phần của tài liệu Bài Giảng C++ (Trang 123 - 126)

Ta đã khá quen với việc sử dụng các biến, các phần tử của mảng và tên mảng trong các câu lệnh. Trên đây ta cũng đã đề cập đến các thành phần của cấu trúc là biến và mảng. Việc xử lý một cấu trúc bao giờ cũng phải được thực hiện thông qua các thành phần của nó.

Để truy cập đến một thành phần cơ bản (là biến hoặc mảng) của một cấu trúc ta sử dụng một trong các cách viết sau: tên_cấu_trúc.tên_thành_phần tên_cấu_trúc.tên_cấu_trúc.tên_thành_phần tên_cấu_trúc. tên_cấu_trúc.tên_cấu_trúc.tên_thành_phần ...

Cách viết thứ nhất như trên được sử dụng khi biến hoặc mảng là thành phần trực tiếp của một cấu trúc. Ví dụ như biến ngaythu, biến nam và mảng

thang là các thành phần trực tiếp của các biến kiểu

cấu trúc ngaydi, ngayden

Các cách viết còn lại được sử dụng khi biến hoặc mảng là thành phần trực tiếp của một cấu trúc mà bản thân cấu trúc này lại là thành phần của các cấu trúc lớn hơn.

Ví dụ: Ta xét phép toán trên các thành phần của các biến kiểu cấu trúc nhom1, nhom2:

Câu lệnh: printf("%s",nhom1.ten); sẽ đưa lên màn hình tên của nhom1.

Câu lệnh:

tongluong=nhom1.bacluong+nhom2.bacluong; sẽ gán tổng lương của nhom1 và nhom2 rồi gán cho biến tongluong.

Câu lệnh: printf("%d",nhom1.ngaysinh.ten); sẽ đưa lên màn hình ngày sinh của nhom1.

Câu lệnh:

printf("%d",nhom1.ngaybatdaucongtac.nam); sẽ đưa lên màn hình ngày bắt đầu công tác của nhom1. Chú ý:

Có thể sử dụng phép toán lấy địa chỉ đối với các thành phần của cấu trúc để nhập số liệu trực tiếp vào các thành phần của cấu trúc. Ví dụ như ta viết:

scanf("%d",&nhom1.ngaybatdaucongtac.nam); Tuy nhiên ta nên nhập số liệu vào một biến trung gian sau đó mới gán cho thành phần của cấu trúc như sau:

int year;

scanf("%d",&year);

nhom1. ngaybatdaucongtac.nam=year;

Để tránh dài dòng khi làm việc với các thành phần của cấu trúc ta có thể dùng lệnh #define. Ví

dụ trong câu lênh scanf ở ví dụ trên, ta có thể viết như sau:

#define p nhom1.ngaybatdaucongtac ...

scanf("%d",&p.nam);

Ví dụ: Giả sử mỗi dữ liệu về một cán bộ gồm: GNgày tháng năm sinh.

NNgày tháng năm vào cơ quan. NBậc lương.

Yêu cầu:

Y Xây dựng cấu trúc dữ liệu lưu trữ thông tin về cán bộ.

v Viết chương trình vào số liệu của một cán bộ. V Viết chương trình đưa số liệu đó ra máy in. Chương trình được viết như sau:

#include "stdio.h" typedef struct { int ngay; char thang[10]; int nam; } date; typedef struct { date ngaysinh; date ngayvaocq; float luong; } canbo; main() 125

{

canbo p;

printf("\n Sinh ngay: "); scanf("%d",&p.ngaysinh.ngay); (adsbygoogle = window.adsbygoogle || []).push({});

printf("\n Thang: ");

scanf("%d",&p.ngaysinh.thang); printf("\n Nam: ");

scanf("%d",&p.ngaysinh.nam);

printf("\n Vao co quan ngay: "); scanf("%d",&p.ngayvaocq.ngay);

printf("\n Thang: ");

scanf("%d",&p.ngayvaocq.thang);

printf("\n Nam: ");

scanf("%d",&p.ngayvaocq.nam);

printf("\n Luong: ");scanf("%d",&p.luong); fprintf(stdprn,"\n Ngay sinh:%d%s %d",p.ngaysinh.ngay,p.ngaysinh.thang,

p.ngaysinh.nam);

fprintf(stdprn,"\n Ngay vao co quan:%d%s %d",p.ngayvaocq.ngay,

p.ngayvaocq.thang,p.ngayvaocq.nam); fprintf(stdprn,"\n Luong: %8.2f",p.luong); }

Một phần của tài liệu Bài Giảng C++ (Trang 123 - 126)