trong C thì hình như không có, nhưng khi qua C++ thì có class cũng tương tự như struct vậy và nó có thể kế thừa được. Bạn thử tìm hiểu về kế thừa xem có gì dùng được không?
Cho mình hỏi nếu tạo nhiều struct nhưng muốn giữa chúng có sự liên kết, nhập dữ liệu thì làm ntn ?
vd:
struct Date{
int ngay,thang, nam;
};
struct SinhVien{
char ten;
int NgaySinh;
int NgayNhapHoc;
};
ở đây mình muốn biến NgaySinh, NgayNhapHoc dùng cái struct Date. Như vậy được ko ???
trong C thì hình như không có, nhưng khi qua C++ thì có class cũng tương tự như struct vậy và nó có thể kế thừa được. Bạn thử tìm hiểu về kế thừa xem có gì dùng được không?
Bạn hoàn toàn có thể khai báo NgaySinh, NgayNhapHoc kiểu Date. Truy cập thì như bình thường, ví dụ:
tên biến.NgaySinh.Nam=1987;
Bạn có thể dùng như trên!C Code:
typedef struct Date { int ngay,thang, nam; }; typedef struct SinhVien { char ten; Date NgaySinh; Date NgayNhapHoc; };
Nếu không dùngthì bạn dùng như sauC Code:
typedef
C Code:
struct Date { int ngay,thang, nam; }; struct SinhVien { char ten; struct Date NgaySinh; struct Date NgayNhapHoc; };
skype: hvphu2010
Yahoo: hvphu2010
Sdt: 0129 609 4567
Cái typedef như thế này, tuy hợp lệ, lại chẳng có 1 chút ý nghĩa nào dù đối với C hay C++: Typedef 1 kiểu struct về 1 cái noname.
Với C++ thì không cần typedef. Với C thì thường typedef như sau
Cũng có thể typedef struct Date {...} Date; (2 cái cùng tên) nhưng nhìn vậy không được trong sáng cho lắm, gây khó hiểu cho những người mới họcC Code:
typedef struct Date_s { int ngay,thang, nam; } Date;
Có lẽ ý bạn là thế này chăng?
Cái này typedef 1 unnamed struct về kiểu Date. Gọn gàng hơn, (vì đằng nào nếu ghi struct Date_s thì cũng chẳng mấy khi dùng đến Date_s) nhưng mình nhớ mang máng đọc ở đâu đó không khuyến khích làm như vậy. Quên mất vì sao rồiC Code:
typedef struct { int ngay,thang, nam; } Date;
Có thể lòng chúng:
C Code:
struct SinhVien{ char ten; struct Date{ int ngay,thang, nam; } ngaysinh, ngaynhaphoc; }; int main (void) { struct SinhVien p; p.ngaynhaphoc.nam = 0; return 0; }
Hoặc có thể tách ra
C Code:
#include <stdio.h> struct Date{ int ngay,thang, nam; }; struct SinhVien{ char ten; struct Date ngaysinh, ngaynhaphoc; }; int main (void) { struct SinhVien p; p.ngaynhaphoc.nam = 0; return 0; }
ở câu lệnh khai báo:
C Code:
struct SinhVien p;
phải thêm từ khóa struct để trình biên dịch biết SinhVien là Kiểu Dữ liệu đã khai báo.
nếu khong ở việc định nghĩa struct thêm typedef vào.
C Code:
#include <stdio.h> typedef struct { int ngay,thang, nam; }Date; typedef struct { char ten; Date ngaysinh, ngaynhaphoc; }SinhVien; int main (void) { SinhVien p; p.ngaynhaphoc.nam = 0; return 0; }
mình muốn thêm cái struct DanhSach vào, mình nhập vào thì nó ko có nhận vô cái mảng arr[100]Code:#include <stdio.h> #include<iostream> using namespace std; typedef struct { int ngay,thang, nam; }Date; typedef struct { char ten; Date ngaysinh, ngaynhaphoc; }SinhVien; typedef struct DanhSach { int n; SinhVien arr[100]; }; void main() { DanhSach list; cin>>list.n; for(int i=0;i<list.n;i++) }
Post nốt đoạn phía sau vòng for luôn đi bạn @@
máy mình nó ko có nhận dc , ghi đến arr[i].ngaysinh là nó báo sai ở chữ list rùi ==!Code:for(int i=0; i < list.n ; i++) { cin>> list.arr[i].ngaysinh.d << " "; cin>> list.arr[i].ngaysinh.m << " "; cin>> list.arr[i].ngaysinh.y<< " "; }