Bài tập

Biến và hằng số trong C: Hướng dẫn từ A đến Z

Huy Erick

Giới thiệu Trong lập trình C, biến và hằng số là hai khái niệm cơ bản mà bạn cần nắm vững để làm việc hiệu quả. Trước khi chúng ta bước vào việc tìm hiểu...

Giới thiệu

Trong lập trình C, biến và hằng số là hai khái niệm cơ bản mà bạn cần nắm vững để làm việc hiệu quả. Trước khi chúng ta bước vào việc tìm hiểu chi tiết về biến và hằng số, hãy cùng tìm hiểu về kiểu dữ liệu - khái niệm quan trọng không thể thiếu trong lập trình.

Kiểu dữ liệu trong C

Trước khi chúng ta tìm hiểu về biến, hãy cùng nhau tìm hiểu về kiểu dữ liệu trong lập trình C. Một kiểu dữ liệu là một cách phân loại dữ liệu cho chương trình hiểu rõ về loại dữ liệu mà lập trình viên muốn sử dụng.

Ví dụ, nếu bạn muốn quản lý tuổi của một người trong chương trình, thì tuổi sẽ được định dạng là kiểu số nguyên (integer) trong ngôn ngữ lập trình. Các ngôn ngữ lập trình khác nhau hỗ trợ nhiều kiểu dữ liệu khác nhau, và C cũng không là ngoại lệ.

Trong ngôn ngữ lập trình C, có 6 kiểu dữ liệu phổ biến được sử dụng nhất:

Kiểu dữ liệu Kích thước Mô tả

int 4 bytes Lưu trữ số nguyên từ -2,147,483,648 đến 2,147,483,647 long 8 bytes Lưu trữ số nguyên từ -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 float 4 bytes Lưu trữ số thập phân với độ chính xác từ 6 đến 7 chữ số thập phân double 8 bytes Lưu trữ số thập phân với độ chính xác từ 15 chữ số thập phân char 2 bytes Lưu trữ một ký tự hoặc giá trị trong bảng mã ASCII

Biến trong C là gì?

Biến là nơi lưu trữ tạm thời dữ liệu với một kiểu dữ liệu xác định. Biến có thể thay đổi giá trị trong quá trình thực thi chương trình, do đó được gọi là biến.

Một biến trong ngôn ngữ C bao gồm 3 thành phần:

  • Kiểu dữ liệu: là kiểu dữ liệu mà biến đó sẽ lưu trữ và sử dụng.
  • Tên gọi: tên gọi giúp ta làm việc với biến đó trong chương trình, như gọi biến ra, tính toán biến đó, vv.
  • Giá trị: là giá trị mà biến chứa, ví dụ như 10.

Cách đặt tên biến trong C

Khi đặt tên cho biến trong ngôn ngữ C, có một số nguyên tắc mà bạn cần nắm vững:

  • Tên biến chỉ có thể chứa chữ cái (viết hoa hoặc viết thường), chữ số và ký tự gạch dưới (_).
  • Tên biến phải bắt đầu bằng một chữ cái.
  • Không sử dụng khoảng trắng hoặc các ký tự đặc biệt như !, @, #, vv.
  • Không sử dụng chữ cái mang dấu trọng âm (ví dụ é, è, ê...).
  • Tên biến không được trùng với các từ khóa trong ngôn ngữ C.
  • Quan trọng nhất, trong ngôn ngữ C, chữ thường và chữ in hoa được coi là hai biến khác nhau. Ví dụ, chieu_rong, CHIEU_RONG và CHieu_RoNg là ba biến khác nhau trong ngôn ngữ C.

Vậy đặt tên biến như thế nào cho đúng?

Để đặt tên biến đúng cách trong ngôn ngữ C, hãy tham khảo một số quy tắc sau:

  • Sử dụng tiếng Anh để đặt tên biến, điều này làm cho code dễ đọc và hiểu.
  • Tên biến nên bắt đầu bằng một chữ cái viết thường. Nếu tên biến có nhiều từ, hãy viết hoa chữ cái đầu tiên của từ tiếp theo hoặc sử dụng dấu gạch dưới. Ví dụ: phoneNumber hoặc phone_number.
  • Tên biến cần phải tường minh, có nghĩa là tên biến phải thể hiện được ý nghĩa rõ ràng đúng với mục đích khi khai báo. Ví dụ: name thay vì chỉ sử dụng n, age thay vì chỉ sử dụng a.

Khai báo và khởi tạo biến trong C

Để khai báo một biến trong ngôn ngữ C, bạn có thể sử dụng cú pháp sau:

kiểu dữ liệu tên biến;

Hoặc bạn có thể khai báo và gán giá trị cho biến cùng một lúc như sau:

kiểu dữ liệu tên biến = giá trị;

Hình 1: Khai báo và khởi tạo biến trong C

Số nguyên

Đối với kiểu số nguyên, không có gì đặc biệt, chúng ta hãy xem qua ví dụ sau:

#include   int main() {    int a = 2; // gán giá trị cho biến tại thời điểm khai báo    int b;    b = 5; // gán giá trị sau khi khai báo biến }

Số thập phân

Đối với kiểu số thập phân (float và double), chúng ta cần chú ý khi khai báo và gán giá trị cho biến. Trong lập trình, chúng ta sử dụng dấu chấm (.) thay vì dấu phẩy (,) để biểu thị số thập phân.

#include   int main() {    float a = 2.75; // sử dụng dấu .    float b = 5,55; // sử dụng dấu , sẽ bị báo lỗi }

Kiểu ký tự

Đối với kiểu ký tự, giá trị cần được đặt trong cặp dấu nháy đơn ('') để chương trình hiểu được đó là một ký tự.

#include   int main() {    char c = 'A'; }

Nếu bạn cố tình khai báo nhiều hơn 1 ký tự trong dấu nháy đơn, biến sẽ chỉ nhận ký tự cuối cùng.

#include   int main() {    char c = 'ABC';    printf("%c", c); }

Khi bạn khai báo mà không gán giá trị cho biến, lúc này biến sẽ chứa một giá trị không xác định.

Hằng số trong C

Nếu bạn muốn khởi tạo một biến có giá trị không thể thay đổi, bạn có thể sử dụng hai cách sau:

  • Sử dụng bộ tiền xử lý #define.
  • Sử dụng từ khóa const.

Điều này sẽ tạo ra một hằng số.

Ví dụ với bộ tiền xử lý #define:

#include  #define PI 3.14  int main() {    printf("%f", PI); }

Ví dụ với từ khóa const:

#include   int main() {    const double PI = 3.14;    PI = 4.5; // dòng này sẽ bị lỗi    printf("%f", PI); }
  • Khi bạn gán lại giá trị PI = 4.5, dòng này sẽ bị lỗi vì PI đã được khai báo với từ khóa const. Lúc này PI được xem là một hằng số và không thể thay đổi giá trị.
  • Nên sử dụng hằng số khi bạn muốn một biến không thể thay đổi giá trị do ngẫu nhiên hay sơ ý của bản thân hoặc không mong muốn người khác sơ ý hoặc cố ý thay đổi giá trị của biến, điều này có thể dẫn đến chương trình chạy sai hoặc bị lỗi.
  • Quy tắc đặt tên biến hằng số hơi khác với quy tắc đặt tên biến thông thường. Tên biến hằng số thường được viết hoa tất cả các ký tự, và nếu tên biến hằng số có nhiều từ, thì mỗi từ nên được ngăn cách bằng dấu gạch dưới. Ví dụ: PI, NEW_LINE.

Phạm vi biến trong C

Trong ngôn ngữ lập trình C, mọi biến khi khai báo đều có hai thuộc tính: kiểu dữ liệu (type) và lớp lưu trữ (storage class). Lớp lưu trữ chính là thuộc tính xác định phạm vi của biến - nơi nào có thể sử dụng biến đó và biến đó tồn tại trong bao lâu. Có hai loại phạm vi chính cần quan tâm:

Biến toàn cục trong C

Các biến được khai báo bên ngoài tất cả các khối code của hàm main được gọi là biến toàn cục (global variable). Các biến toàn cục có thể sử dụng trong mọi hàm, hay mọi nơi trong chương trình. Biến toàn cục cũng tồn tại cho tới khi chương trình kết thúc.

Ví dụ:

#include   int n = 7; // biến toàn cục  int main() {    printf("%d", n);    return 0; }

Biến cục bộ trong C

Các biến được khai báo trong thân một hàm được gọi là biến cục bộ (local variable). Các biến cục bộ này chỉ tồn tại và chỉ có thể sử dụng trong hàm mà nó được khai báo.

Thân hàm được xác định nằm trong cặp dấu ngoặc nhọn {}.

Ví dụ:

#include   int main() {    int a; // biến cục bộ    double b; // biến cục bộ    return 0; }

Độ ưu tiên phạm vi biến

Nếu bạn sử dụng cùng một tên cho biến toàn cục và biến cục bộ, thì biến cục bộ sẽ được ưu tiên hơn.

Ví dụ:

#include   int a = 5; // biến toàn cục  int main() {    int a = 1; // biến cục bộ    printf("%d", a); }

Kết luận

Trên đây là một số điểm quan trọng về biến và hằng số trong ngôn ngữ lập trình C. Hy vọng rằng thông qua bài viết này, bạn đã có được một cái nhìn tổng quan về cách sử dụng và quản lý biến và hằng số trong lập trình C.

1