30/09/2018, 16:02

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
Đỗ Trung Quân viết 18:06 ngày 30/09/2018

Đá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

Nguyễn Minh Dũng viết 18:13 ngày 30/09/2018

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;
}
Đỗ Trung Quân viết 18:06 ngày 30/09/2018

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

Đỗ Trung Quân viết 18:14 ngày 30/09/2018

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

  struct data  sdata;
  sdata *b;
Nguyễn Minh Dũng viết 18:12 ngày 30/09/2018

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?

Đỗ Trung Quân viết 18:15 ngày 30/09/2018

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?

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

Nguyễn Minh Dũng viết 18:06 ngày 30/09/2018

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

Đỗ Trung Quân viết 18:03 ngày 30/09/2018

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

Bài liên quan
0