Với `struct TS` thì `TS x` và `TS& x` khác nhau như thế nào?

Khi em khai báo một Mảng cấu trúc struct TS thì khi e khai báo
TS x và TS& x thì hai cái đấy có gì khác nhau ạ!

  • TS là struct không phải mảng struct
  • TS &x thì không có struct TS mới dc tạo ra.
  • TS x: giả sử tham số lúc gọi hàm là t. Thì x là struct dc tạo bởi constructor TS x(t);
1 Like

Có khác chứ. Nếu khai báo TS& ts; sẽ bị lỗi.
Mình chạy chương trình thử thì thấy thế :smiley:
Theo mình biết thì dấu & trước biến thì đó là 1 biến tham chiếu .Dùng để tham chiểu đến 1 biến khác.
Hình như phải khai báo TS &ts = otherTS mói được. Tức là khai báo phải khởi tạo luôn.
Và TS ts; và TS& ts khác nhau khi truyền vào hàm.
Các bác dười góp ý

1 Like

cũng k hiểu lắm a có thể nói rõ ra được k

Khai báo &bien là biến tham chiêu.
Biến tham chiếu thì phải tham chiếu đến 1 biên khác hay còn gọi biến tham chiếu là bí danh của 1 biến nào đó.
Như bác gió nói thi khai báo TS &x thì ko có struct mới được tạo ra vì biến tham chiếu không được cấp phát bộ nhớ.
Khi bạn khai báo

type &tham_chieu = bien;

thì tham_chieu đã là bí danh của bien. Làm việc với tham_chieu là làm việc với bien.Tức bạn thay đổi tham_chieu thì bạn cũng thay đổi bien,Việc đó rất có lợi cho việc truyền tham số vào hàm mà muốn tham số đó thay đổi.(khỏi sử dụng con trỏ cho đỡ phức tạp)

2 Likes

tham chiếu bạn hiểu đơn giản là tạo ra một cái tên nữa cho vùng nhớ đó. Nếu bạn không gán ngay lúc khai báo tham chiếu thì rất bất hợp lý.
Kiểu như bạn nghĩ ra một cái tên nhưng không gọi ai bằng cái tên đó thì không đc (vì tên chỉ có một người có tên đó thôi, nếu bạn định gọi người khác bằng tên đó thì bất lịch sự :smile: )

1 Like

Đồng ý.

Chuẩn không cần chỉnh.

TS ts là biến
TS& ts là reference, tức tham chiếu: http://portal.daynhauhoc.com/series/c-bai-42-reference/

Chuẩn :smile:

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