Poll: Kiểm tra kiến thức C - 1.17

Các bạn thảo luận đáp án nhé, bài test lấy từ http://www.indiabix.com/online-test/c-programming-test/11
17.What is the output of the program?

typedef struct data;
{
    int x;
    sdata *b;
}sdata;
  • A. Error: Declaration missing ‘;’
  • B. Error: in typedef
  • C. No error
  • D. None of above

Đáp án là C: viết như này tương đương với

typedef struct data;
{
    int x;
    sdata *b;
};
int main(){
   data sdata;
}

Đúng không anh @ltd

Viết như vậy lỗi đó, em đọc thêm structtypedef struct trong C. C++ khác với C chỗ này.

C++ không cần sử dụng tag struct. C cần.

Ví dụ:
C

struct DATA{
    int x;
}
int main()
{
    struct DATA abc;
}

C++

struct DATA{
    int x;
}
int main()
{
    DATA abc;
}
1 Like

Vậy là nhớ sai à anh =)). 2 năm rồi không đụng đến code C :-s.

Còn cái này thì sao vậy anh, mơ hồ quá nhỉ @@

  struct data  sdata;
  sdata *b;

Viết kiểu này báo lỗi chứ, sdata là con trỏ kiểu data rồi. Sao mà khai báo sdata *b; được nữa?

1 Like

à, em viết lại cái đề bài thôi. Anh xem bài này chọn gì?

Bài này chọn C, em viết cái đề bài sai rồi. Đề bài có chữ typedef còn ví dụ của em không có typedef.

Khi có typedef thì có nghĩa là bây giờ sdata tương đương với struct data

1 Like

Vâng, em viết sai mà check đáp án C nên em không hiểu. Em biết em viết sai nên sửa lại rồi ^^

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?