01/10/2018, 09:35

Hỏi về toán tử == trong câu lệnh return

int stackEMPTY(const stack *s) {
return s->top==NULL ;
}
Mọi người có thể giải thích giúp em trong câu lệnh trên thì

  1. dùng từ khóa const khi khai báo có tác dụng gì?
  2. trong câu lệnh return có toán tử == , em chưa hiểu lắm, có liên quan gì đến dữ liệu trả về kiểu int
    Em cám ơn.
Văn Dương viết 11:49 ngày 01/10/2018

Câu 1 có dùng nhưng chưa rõ.
Hình như xác định tham số đưa vào hàm phải được khai báo const hay static gì đó.

Câu 2 có thể viết lại như thế này thì sẽ nhìn ra thứ tự thực hiện.

return (s->top==NULL);

Nó thực hiện phép toán so sánh trong ngoặc trước. Rồi return kết quả đó ra ngoài.

KYN viết 11:42 ngày 01/10/2018

1 - 1 cách sử dụng const là để cho giá trị của biến- tham số đó ko thay đổi khi viết function, nếu có code làm thay đổi giá trị của biến const thì lỗi ngay.

2 - còn == là phép so sánh ( comparison operator) , trả về true-false (boolean)
khi viết hàm trả về kiểu int thì nó ép kiểu int(true) => 1, int(false) => 0

HelloWorld viết 11:47 ngày 01/10/2018

Câu 1. Hàm trên kiểm tra stack có rỗng không. Việc kiểm tra k được phép và cũng k cần thay đổi giá trị trên stack nên truyền stack vào phải để const để hàm này k thay đổi được giá trị trong stack
Câu 2 top là phần tử trên cùng của stack. Stack cài đặt bằng con trỏ.stack trống khi top == null. Việc return như trên sẽ trả về 1 nếu stack rỗng

Nobita viết 11:44 ngày 01/10/2018

em cám ơn ạ.em code c nên không có static

Nobita viết 11:39 ngày 01/10/2018

đây cũng là một dị dụ nữa. nếu không có ‘’‘const’ ở hàm docFILE nó cũng báo lỗi, chuyển đổi bị phản đối, em cũng không hiểu lắm,anh giải thích rõ hơn cái này cho em với. em cám ơn anh.

rogp10 viết 11:49 ngày 01/10/2018

Hàm đọc file không có lí do gì để sửa chuỗi chứa tên file cả nên viết luôn const char* cho chắc ăn.

Cái này là do literal string là const, do nó (thường) nằm trong vùng nhớ cấm ghi và trong chính file exe luôn.

Nobita viết 11:40 ngày 01/10/2018

em có google thì vẫn chưa hiểu được string literal, vì em chưa code c++, anh nói cho em biết cụ thể được không anh. em cám ơn

rogp10 viết 11:46 ngày 01/10/2018

String literal C cũng có, tức là “Day Nhau Hoc” và “” cũng là string literal rồi.

Bài liên quan
0