Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: struct lồng nhau sử dụng ra sao

  1. #1
    Ngày gia nhập
    06 2011
    Bài viết
    6

    Mặc định struct lồng nhau sử dụng ra sao

    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 ???

  2. #2
    Ngày gia nhập
    07 2011
    Bài viết
    59

    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?

  3. #3
    Ngày gia nhập
    04 2008
    Nơi ở
    Bốn bề là nhà
    Bài viết
    697

    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;

  4. #4
    Ngày gia nhập
    10 2011
    Bài viết
    5

    Trích dẫn Nguyên bản được gửi bởi CongGio Xem bài viết
    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 ???
    Theo mình thì bạn có thể cho cấu trúc sinh viên lồng vào trong cấu trúc date, như vậy bạn có thể lấy dữ liệu của cấu trúc sinh viên thông qua cấu trúc date. Ví dụ bạn muốn truy xuất đến trường ngaysinh thì gõ tên biến kiểu date.tên biến kiểu sinh viên.ngay sinh

  5. #5
    Ngày gia nhập
    09 2010
    Nơi ở
    Hà Nội
    Bài viết
    381

    C Code:
    1. typedef struct Date
    2. {
    3.          int ngay,thang, nam;
    4. };
    5.  
    6. typedef struct SinhVien
    7. {
    8.         char ten;
    9.         Date NgaySinh;
    10.         Date NgayNhapHoc;
    11.  
    12. };
    Bạn có thể dùng như trên!
    Nếu không dùng
    C Code:
    1. typedef
    thì bạn dùng như sau
    C Code:
    1. struct Date
    2. {
    3.          int ngay,thang, nam;
    4. };
    5. struct SinhVien
    6. {
    7.         char ten;
    8.         struct Date NgaySinh;
    9.         struct Date NgayNhapHoc;
    10.  
    11. };

    skype: hvphu2010
    Yahoo: hvphu2010
    Sdt: 0129 609 4567

  6. #6
    Ngày gia nhập
    07 2011
    Bài viết
    160

    Mặc định struct lồng nhau sử dụng ra sao

    Trích dẫn Nguyên bản được gửi bởi kitti Xem bài viết
    C Code:
    1. typedef struct Date
    2. {
    3.          int ngay,thang, nam;
    4. };
    5.  
    6. typedef struct SinhVien
    7. {
    8.         char ten;
    9.         Date NgaySinh;
    10.         Date NgayNhapHoc;
    11.  
    12. };
    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 Code:
    1. typedef struct Date_s
    2. {
    3.          int ngay,thang, nam;
    4. } Date;
    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ọc

    Có lẽ ý bạn là thế này chăng?
    C Code:
    1. typedef struct
    2. {
    3.          int ngay,thang, nam;
    4. } Date;
    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ồi

  7. #7
    Ngày gia nhập
    01 2011
    Nơi ở
    \WINDOWS\Assembly\
    Bài viết
    54

    Trích dẫn Nguyên bản được gửi bởi CongGio Xem bài viết
    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 ???
    Có thể lòng chúng:
    C Code:
    1. struct SinhVien{
    2.        char ten;
    3.        
    4.        struct Date{
    5.               int ngay,thang, nam;
    6.        } ngaysinh, ngaynhaphoc;
    7. };
    8.  
    9.  
    10. int main (void)
    11. {
    12.    
    13.     struct SinhVien p;
    14.     p.ngaynhaphoc.nam = 0;    
    15.    
    16.    
    17.     system("PAUSE");
    18.     return 0;
    19. }

    Hoặc có thể tách ra

    C Code:
    1. #include <stdio.h>
    2.  
    3. struct Date{
    4.               int ngay,thang, nam;
    5.        };
    6.  
    7. struct SinhVien{
    8.        char ten;
    9.        
    10.        struct Date ngaysinh, ngaynhaphoc;      
    11. };
    12.  
    13.  
    14. int main (void)
    15. {
    16.    
    17.     struct SinhVien p;
    18.     p.ngaynhaphoc.nam = 0;    
    19.    
    20.    
    21.     system("PAUSE");
    22.     return 0;
    23. }

    ở câu lệnh khai báo:
    C Code:
    1. 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:
    1. #include <stdio.h>
    2.  
    3. typedef struct {
    4.               int ngay,thang, nam;
    5.        }Date;
    6.  
    7. typedef struct {
    8.        char ten;
    9.        
    10.         Date ngaysinh, ngaynhaphoc;      
    11. }SinhVien;
    12.  
    13.  
    14. int main (void)
    15. {
    16.    
    17.     SinhVien p;
    18.     p.ngaynhaphoc.nam = 0;    
    19.    
    20.    
    21.     system("PAUSE");
    22.     return 0;
    23. }

  8. #8
    Ngày gia nhập
    06 2011
    Bài viết
    6

    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++)   
                  
       
    }
    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]

  9. #9
    Ngày gia nhập
    10 2011
    Bài viết
    554

    Post nốt đoạn phía sau vòng for luôn đi bạn @@

  10. #10
    Ngày gia nhập
    06 2011
    Bài viết
    6

    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<< " ";
    	}
    máy mình nó ko có nhận dc , ghi đến arr[i].ngaysinh là nó báo sai ở chữ list rùi ==!

Các đề tài tương tự

  1. Gửi struct thông qua socket có khác nhau giữa gửi từng field và gửi cả struct?
    Gửi bởi bptvip_pro trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 7
    Bài viết cuối: 12-05-2013, 02:35 AM
  2. Lập trình C++ Giúp đỡ về điểm khác nhau giữa struct và typedef struct
    Gửi bởi huydang2410 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 27-02-2013, 10:30 AM
  3. Bài toán phân số bằng struct bị lỗi khi nhập 2 phân số bằng nhau
    Gửi bởi yennhi2812 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 09-03-2011, 11:56 PM
  4. VC++ cách gán 2 biến của 1 struct với nhau
    Gửi bởi honey trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 02-09-2009, 05:29 PM
  5. Struct lồng nhau ??
    Gửi bởi babe trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 10
    Bài viết cuối: 20-03-2008, 12:34 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn