Các kiểu dữ liệu trong lập trình C

Trong bài này tất cả chúng ta sẽ học những kiểu dữ liệu trong lập trình C, đây là một kỹ năng và kiến thức rất quan trọng khi bạn muốn tối ưu code, tối ưu RAM và ROM. Và chọn kiểu dữ liệu tương thích cho những biến hoặc hằng trong khi lập trình

Các kiểu dữ liệu trong lập trình C

Có 3 nhóm kiểu dữ liệu chính :

  • Primary: Kiểu dữ liệu cơ bản của ngôn ngữ C
  • user defined: Kiểu dữ liệu người lập trình tự định nghĩa
  • Derived: Kiểu dữ liệu nâng cấp từ dữ liệu cơ bản, phục vụ cho các mục đích khác nhau

Data types in C

Nhóm kiểu dữ liệu cơ bản

Kiểu kí tự Char

Kiểu kí tự char có 1 kiểu đặc biệt là String, bao gồm chuỗi nhiều char liên tiếp.

Kiểu char thường được sử dụng để lưu giữ những kí tự, những chữ và số. Theo bảng kí tự ASCII

Kiểu Cỡ lưu trữ Dãy giá trị
char 1 byte -128 tới 127 hoặc 0 tới 255
unsigned char 1 byte 0 tới 255
signed char 1 byte -128 tới 127

Kiểu số nguyên (kiểu int) trong C

Kiểu dữ liệu số nguyên chia thành 2 kiểu có dấu ( signal ) và không âm ( unsigned ) .
Dựa vào giá trị cực lớn ( số lượng giới hạn ) của kiểu giá trị sẽ chia thành những kiểu nhỏ như sau :

Kiểu Cỡ lưu trữ Dãy giá trị
int 2 hoặc 4 bytes -32,768 tới 32,767 hoặc -2,147,483,648 tới 2,147,483,647
unsigned int 2 hoặc 4 bytes 0 tới 65,535 hoặc 0 tới 4,294,967,295
short 2 bytes -32,768 tới 32,767
unsigned short 2 bytes 0 tới 65,535
long 4 bytes -2,147,483,648 tới 2,147,483,647
unsigned long 4 bytes 0 tới 4,294,967,295

Kiểu số thực dấu chấm động (Floating-Point) trong C

Bảng dưới đây đưa cho bạn những hiểu biết đơn cử về những kiểu số thực dấu chấm động tiêu chuẩn với cỡ tàng trữ và dải giá trị cũng như độ đúng chuẩn :

Kiểu Cỡ lưu trữ Dãy giá trị Độ chính xác
float 4 byte 1.2E-38 tới 3.4E+38 6 vị trí thập phân
double 8 byte 2.3E-308 tới 1.7E+308 15 vị trí thập phân
long double 10 byte 3.4E-4932 tới 1.1E+4932 19 vị trí thập phân

Kiểu void

Kiểu void xác lập không có giá trị nào. Nó được sử dụng trong 4 trường hợp sau đây :

  • Hàm trả về không có giá trị. VD: void Turn_on_led(led1);
  • Hàm không có tham số truyền vào. VD: int Turn_off_all(void);
  • Hàm không có giá trị và không có tham số truyền vào. VD: void Ham(void);
  • Con trỏ kiểu void*. VD: void *malloc (size_t size); sẽ học trong các bài con trỏ.

Nhóm dữ liệu người dùng định nghĩa

Đây là những từ khóa để người lập trình tự định nghĩa kiểu dữ liệu mình sử dụng. Chúng vẫn phải sử dụng những kiểu dữ liệu cơ bản để tạo ra kiểu dữ liệu mới
Chúng ta sẽ học trong những bài enum và typerdef

Nhóm kiểu dữ liệu tăng cấp ( đặc biệt quan trọng )

Đây là những kiểu dữ liệu có công dụng đặc biệt quan trọng, tạo ra bởi những kiểu dữ liệu cơ bản, để sử dụng trong những trường hợp đặc biệt quan trọng :
Ví dụ :

  • Array:mảng, là chuỗi các kiểu dữ liệu
  • Pointer: con trỏ, là địa chỉ của ô nhớ
  • Struct: tạo ra cấu trúc dữ liệu riêng
  • Union: Tập hợp, là hợp của nhiều kiểu dữ liệu với nhau

Những kiểu này sẽ được học trong những phần sau .

Hàm sizeof

Hàm sizeof ( tham số truyền vào ) để kiểm tra xem biến, hoặc kiểu dữ liệu đó chiếm bao nhiêu byte trong bộ nhớ .
Để kiểm tra size những kiểu dữ liệu cơ bản và khoanh vùng phạm vi của nó, tất cả chúng ta hoàn toàn có thể làm như sau :

#include 
#include // for int,char macros 
#include // for float,double macros 
 
 
int main(){
    char c;
    short s;
    int i;
    unsigned int ui;
    float f;
    double d;
    long long ll;
 
 
    // sizeof
    printf("Size of char is %d\n", sizeof c); // Ctrl C, Ctrl V
    printf("Size of short is %d\n", sizeof s);
    printf("Size of int is %d\n", sizeof i);
    printf("Size of unsigned int is %d\n", sizeof ui);
    printf("Size of float is %d\n", sizeof f);
    printf("Size of double is %d\n", sizeof d);
    printf("Size of long long is %d\n", sizeof ll);
 
    // Get min_val and max_val of data_type
    printf("char ranges from : %d to %d\n", CHAR_MIN, CHAR_MAX);
    printf("int ranges from : %d to %d\n", INT_MIN, INT_MAX);
    printf("unsigned int ranges from : 0 to %lli\n", UINT_MAX);
}

Kết quả

datatype

Kết

Khi học kiểu dữ liệu trong C, những bạn nên focus vào những kiểu dữ liệu cơ bản, những kiểu dữ liệu khác đều được tăng trưởng dựa trên những kiểu dữ liệu cơ bản đó. Mỗi kiểu dữ liệu sẽ tương thích trong những trường hợp khác nhau. Và hãy chọn kiểu dữ liệu tương thích để tối ưu bộ nhớ chương trình nhé
Tiếp tục chuyển ngay qua bài tiếp theo trong Serie Học lập trình C từ A tới Z .
Đừng quên gia nhập Hội Anh Em Nghiện Lập trình để giao lưu và học hỏi nhé

5/5 – ( 1 bầu chọn )