Giải thích sự khác nhau giữa khai báo và định nghĩa trong C/C++
Giải thích chung chung:
Khai báo: là giới thiệu sự tồn tại của
- một biến với kiểu dữ liệu cụ thể
- một hàm với cấu trúc trả về và tham số nhận vào
Định nghĩa: là trình bày rõ
- kiểu dữ liệu và giá trị khởi tạo một biến và yêu cầu compiler cấp vùng nhớ cho biến này
- cấu trúc và nội dung của một hàm/class (sẽ ví dụ sau)
Giải thích và ví dụ cho biến:
Khai báo biến:
Ta có thể viết như sau, bắt buộc phải có từ khóa extern
thì mới gọi là khai báo.
int main()
{
extern int cu_lac_gion_tan;
}
Vì từ khóa extern
cho biết rằng biến này được định nghĩa ở chỗ khác. Có nghĩa compiler không cần phải cấp vùng nhớ cho biến này.
Định nghĩa biến:
Vậy trường hợp ta viết như thông thường hay làm
int main()
{
int cau_lam_gioi_the = 3;
}
Thì đây là sự kết hợp giữa khai báo và định nghĩa. Ở đây mình có thể hiểu là, tôi khai báo một biến kiểu int
có tên là cau_lam_gioi_the
và xin compiler cấp cho nó một vùng nhớ (đây là định nghĩa). = 3
tức là sau khi cấp vùng nhớ thì cho vùng nhớ đó gía trị 3.
Nếu mình không gán gía trị cho biến cau_lam_gioi_the
thì compiler sẽ không gán gía trị gì vào vùng nhớ đã tạo cho biến này. Khi đó mình sẽ có một gía trị rác tại vùng nhớ đó.
Giải thích và ví dụ cho hàm:
Hàm thì đơn giản hơn nhiều
Đây là một khai báo
bool daynhauhoc_good(int member_num, int member_iq);
Đây là một định nghĩa
bool daynhauhoc_good(int member_num, int member_iq)
{
// actually I don't care about the arguments lol
return true;
}
Giải thích và ví dụ cho class:
Đây là một khai báo
class DayNhauHoc();
Đây là một định nghĩa
class DayNhauHoc()
{
public:
DayNhauHoc() {}
}
This topic was automatically closed 100 days after the last reply. New replies are no longer allowed.