01/10/2018, 11:53

Typedef trong C++

Chào mọi người em đang bị rối ở đoạn truyền * và & trong function nhờ mọi người thông não giúp ạ:

Em hiểu: int *a; thì a là con trỏ chứa địa chỉ của một biến nguyên. *a là giá trị mà con trỏ a trỏ tới.
Có 2 vấn đề nhờ mọi người giúp:
1.
Em thắc mắc ở chỗ này
dấu * đằng trước nó có ý nghĩa gì ? Tại sao định nghĩa nó là *stack mà không phải stack ?


Cái thứ 2 là
thông thường em hay để tham số trong hàm là dấu “*” khi nào gọi hàm thì sẽ truyền địa chỉ vào. Nhưng ở ví dụ này lại là dấu &. Vậy nó có ý nghĩa gì ạ ?
Cảm ơn mọi người nhiều <3

rogp10 viết 13:53 ngày 01/10/2018
  1. struct node thay cho cả khối ngoặc nhọn, do khối đó chính là một kiểu hợp lệ, tất nhiên đặt ra kiểu thì phải có tên.
  2. Bạn đang lẫn lộn với C++. Chọn 1 trong 2 thôi.
Thân Hoàng viết 13:59 ngày 01/10/2018
  1. em hiểu rồi. & dùng để truyền tham chiếu trong C++, còn C thì dùng *.

Còn 1: nếu định nghĩa typedef node stack thì stack sẽ là kiểu dữ liệu con trỏ lưu kiểu stack.
Vậy: stack s; thì mặc định s đã là con trỏ mà không cần dấu
phải không ạ

rogp10 viết 14:07 ngày 01/10/2018

Đúng rồi nhé. 20 char

Thân Hoàng viết 13:55 ngày 01/10/2018

anh cho em hỏi luôn sự khác nhau giữa -> với . khi truy cập một thành phần bên trong struct.

rogp10 viết 13:54 ngày 01/10/2018

p->init() thay cho (*p).init().

Thân Hoàng viết 13:59 ngày 01/10/2018

vậy tại sao phead = NULL; nằm trong hàm main() thì chạy được nhưng để ngoài hàm main() thì nó báo lỗi hả anh

rogp10 viết 14:00 ngày 01/10/2018

Lệnh (gán…) không được nằm ngoài hàm. Chỉ có khai báo (có khởi tạo) mới nằm ngoài được thôi (lúc này nó thành global).

Thân Hoàng viết 14:07 ngày 01/10/2018

yes, em cảm ơn anh nhiều <3

Bài liên quan
0