Skip to main content

[C] Struct

Viết bài ngắn về Struct trong C rồi đi ngủ.

1. Tạo 1 Struct
Nếu bạn dùng lệnh
int age để khởi tạo biến age thuộc kiểu int,
char name để khởi tạo biến name thuộc kiểu char thì dùng
struct hehe memb để khởi tạo 1 cấu trúc có tên là memb thuộc kiểu struct hehe.
Cái tên Struct để nói rằng trong nó có chứa các "thành phần" con.
Tựa như 1 cái xe máy vậy, nếu gọi cái xe máy là 1 Struct thì nó gồm các thành phần bánh, ống xả, máy... các thành phần này có kiểu: nhựa, sắt thép... ví dụ thế :D Nếu bạn tạo 1 cái xe máy nghĩa là đã tạo ra các bánh, động cơ, ống xả... của nó. Tương tự
Tạo 1 struct chứa các thành phần int age; char name[20] nghĩa là bạn đã tạo ra các biến age, name.

VD
[code]
struct mem{
char name[30];//với char phải luôn gán độ rộng của nó.
char nick[15];
int age;
char phone[11];};


struct mem list[]={{"Nguyen Viet Hung","FamiHug",20,"0982xxxxxx"},{"Đặng Tùng Lâm","LoveYoyo",5,"016899xxxxxx"}};//tạo 1 list gồm 2 phần tử có cấu trúc kiểu mem.
[/code]

Vậy cú pháp để tạo 1 kiểu struct là:

struct TÊN {
int ....;
char....;
float ....;
};

Thay vì mỗi lần phải gõ struct TÊN ta gán 1 nhãn cho kiểu struct này bằng cách sửa lại đoạn lệnh ở ví dụ trên:
[code]
typedef struct mem{
char name[30];//với char phải luôn gán độ rộng của nó.
char nick[15];
char phone[11];} newtype;
newtype list[]..... //newtype giờ để thay thế cho struct mem
[/code]

2. Truy cập đến các "thành phần" con của struct.


Để truy cập đến một member của struct ta dùng dấu "."
VD:

newtype list[]={{"HVN","FamiHug","09xxxxxx"},{"Cici","Invisible","01689xxxxx"}};
    printf("%s %3s %3s",list[1].name,list[1].nick,list[1].phone);//có thể dùng vòng lặp for để in hêt ra màn

thay vì viết list[1].name ta có thể viết
*(list+1)
và để truy cập vào name ta viết như sau:
(*(list+1)).name
Để tránh việc viết dài và dùng dấu ".", C cung cáp tóan tử "->". p->a là dạng rút gọn của (*p).a
Vậy để truy cập vào list[1].name ta viết:
(list+1)->name

Sau đây là code đầy đủ của chương trình tạo 1 struct và truy cập các phần tử của nó.

http://pastebin.com/SDANcnYw

Comments

  1. list[]={{"Nguyen Viet Hung","FamiHug",20,"0982xxxxxx"},{"Đặng Tùng Lâm","LoveYoyo",5,"016899xxxxxx"}}

    cho mình thêm về cái này đi , list ...
    lấy từ C++ ra hả

    ReplyDelete
  2. dòng đấy là tạo mảng gồm 2 phần tử . Có gì mà C++ @@ list ở đây là tên mảng. Ko phải hàm!

    ReplyDelete

Post a Comment

Popular posts from this blog

Tài liệu và hướng dẫn học Python

Để tiết kiệm thời gian, tốt nhất là đi học PyMI Updated: 130617 Sau đây là các tài liệu khuyên dùng: Vì nhiều lý do, nên học python2.7 tại thời điểm hiện tại (giờ là tháng 6/2013 - muốn biết tại sao thì tự tìm hiểu) python 3.5+ (giờ là tháng 2/2017) Chuẩn bị: 1. biết bật tắt máy 2. biết cài python 3. tập gõ 10 ngón - gõ 2 ngón hay 1 ngón cũng không sao, nhưng 10 ngón là cách dễ nhất để gõ nhanh nhất. Tài liệu - Nên dùng tài liệu tại trang chủ của Python làm chính, tham khảo thêm các tài liệu khác tại http://www.familug.org/2016/12/free-ebook.html Căn bản, mới học 1.1 Python PyMI.vn https://pymi.vn/tutorial/ 1.2. Python offical tutorial kết hợp làm bài tập trên HackerRank  (đề bài bằng tiếng Anh, nhưng Google translate 1 lúc cũng ra vì có nhiều ví dụ mẫu đi kèm). Học viên của Pymi.vn có rất nhiều học viên đã tự học với Learn Python the hard way nhưng chưa thấy ai thành công cả. Hai link dưới nên đọc sau khi đã nắm được những phần cơ bản của ngôn ngữ pytho...

The PyMiers

New FAMILUG