Các kiểu dữ liệu trong C phổ biến và cách dùng
Các biến trong lập trình C đều được khai báo dưới dạng một kiểu dữ liệu nhất định. Vậy, các kiểu dữ liệu trong C gồm các loại nào? Dưới đây, IoTZone sẽ giới thiệu đến bạn các dữ liệu chính kèm theo ví dụ minh họa cụ thể, để bạn có thể ứng dụng vào lập trình chương trình của mình nhé!
Kiểu dữ liệu chỉ định loại dữ liệu mà biến lưu trữ, chẳng hạn như các số nguyên, mảng, ký tự,… Mỗi loại dữ liệu sẽ cần một dung lượng bộ nhớ lưu trữ khác nhau, và chúng hỗ trợ một vài thao tác nhất định.
Phân loại các kiểu dữ liệu trong C
Nhìn chung, kiểu dữ liệu trong C gồm 3 loại chính như sau:
- Kiểu dữ liệu đơn giản cơ bản: Các kiểu dữ liệu cơ bản nhất, dùng để chứa các giá trị như số nguyên, ký tự,…
- Kiểu dữ liệu do người dùng xác định: Các kiểu dữ liệu do người dùng tự xác định, chẳng hạn như Class, Union,…
- Kiểu dữ liệu dẫn xuất: Đây là các kiểu dữ liệu được bắt nguồn từ các kiểu dữ liệu cơ bản.
Mỗi loại kiểu dữ liệu sẽ có kích thước khác nhau. Dưới đây, mời bạn cùng xem qua các kiểu dữ liệu cơ bản phổ biến nhất:
int
int là kiểu dữ liệu số nguyên, có thể chứa các giá trị là con số như 0, số dương và số âm. Tuy nhiên, chúng không thể chứa các số thập phân.
Bạn có thể dùng int để khai báo một biến chứa giá trị là số nguyên:
int name;
Trong câu lệnh ví dụ trên, name là tên của một biến số nguyên. Nếu cần khai báo nhiều biến số nguyên trong lập trình C, bạn có thể phân tách bằng dấu phẩy, ví dụ:
int name, age;
Kích thước lưu trữ của biến int thường ở mức 4byte (32bit).
float và double
Đây là hai trong các kiểu dữ liệu trong C dùng để lưu các số thực, khai báo như sau:
float lương;
double giá tiền;
Với ngôn ngữ C, các số có dấu phẩy động có thể được ghi dưới dạng mũ lũy thừa, chẳng hạn như:
float normalizationFactor = 23.121e4;
Vậy, điểm khác biệt giữa float và double là gì? Đó là float có kích thước 4byte (với độ chính xác đơn) còn double có kích thước 8byte (độ chính xác kép).
char
Kiểu dữ liệu char dùng để chứa các ký tự như chữ cái, chẳng hạn như:
char test = 'I';
Kích thước của biến có kiểu dữ liệu char là 1 byte.
void
Kiểu dữ liệu voi là một loại dữ liệu không đầy đủ, bạn có thể hiểu nó như là không có gì bên trong hoặc không thuộc loại nào. Người ta cũng có thể xem đây là một biến có giá trị vắng mặt.
Ví dụ, nếu hàm không trả về một kết quả nào cả, chúng sẽ trả về một dữ liệu có kiểu là void.
Cú pháp của void như sau:
// kiểu trả về của hàm void
void exit(int check);
// Hàm không có bất kỳ tham số nào có thể chấp nhận void.
int print(void);
// bộ nhớ hàm phân bổ
// trả về một con trỏ tới void.
void *malloc (size_t size);
Ví dụ, bạn có thể viết một đoạn code như sau:
// C program to demonstrate
// use of void pointers
#include <stdio.h>
int main()
{
int val = 50;
void* ptr = &val;
printf("%d", *(int*)ptr);
return 0;
}
Khi chạy chương trình trên, bạn sẽ nhận được kết quả trả về là 50.
long và short
Khi bạn cần lưu trữ các con số rất lớn, bạn có thể sử dụng các kiểu dữ liệu long và short trong C:
long x;
long long y;
long double z;
Trong ví dụ trên, biến x và y có thể lưu trữ các số nguyên, còn z thì lưu trữ các dấu phẩy động.
Còn trong trường hợp bạn dùng số nguyên ở phạm vi nhỏ (trong khoảng -32,767 đến 32, 767), bạn có thể sử dụng kiểu dữ liệu short:
short a;
Bạn có thể kiểm tra kích cỡ của biến thông qua toán tử sizeof() như bên dưới:
#include <stdio.h>
int main() {
short a;
long x;
long long y;
long double z;
printf("size of short = %d bytes\n", sizeof(a));
printf("size of long = %d bytes\n", sizeof(x));
printf("size of long long = %d bytes\n", sizeof(y));
printf("size of long double= %d bytes\n", sizeof(z));
return 0;
}
signed và unsigned
Đây là các kiểu dữ liệu trong C đặt biệt, cho phép chúng ta chỉnh sửa loại dữ liệu. Bạn có thể thay đổi khả năng lưu trữ của một loại dữ liệu bằng cách sử dụng:
- signed: Cho phép lưu trữ số dương và âm
- unsigned: Chỉ lưu số dương
Chẳng hạn như sau:
// valid codes
unsigned int a = 35;
int b = -35; // signed int
int c = 36; // signed int
// invalid code: unsigned int cannot hold negative integers
unsigned int num = -35;
Như trong code trên, biến a và num chỉ có thể lưu các giá trị 0 và số dương, vì mình đã gán kiểu dữ liệu unsigned cho nó.
array
Mảng (array) là một kiểu dữ liệu trong C dùng để lưu nhiều giá trị cùng loại như nhau trong biến. Bạn có thể khai báo chúng với kích thước nhất định hoặc kích thước có thể thay đổi đều được, tùy vào nhu cầu sử dụng của bạn.
Ví dụ, dưới đây mình khai báo array bao gồm 5 số nguyên khác nhau:
int arr[5] = {5, 8, 1, 3, 6};
pointer
Kiểu dữ liệu con trỏ (pointer) dùng để lưu địa chỉ của giá trị bên trong nó. Bạn có thể sử dụng pointer để truy cập vào bộ nhớ lưu trữ giá trị và thay đổi giá trị của chúng ngay trong bộ nhớ đó.
Ví dụ về pointer:
int *ptr;
>> Tìm hiểu kỹ hơn về kiểu dữ liệu Pointer tại: Con trỏ trong C là gì? Hướng dẫn cách khai báo và gán giá trị
Struct
Struct là kiểu dữ liệu để lưu nhiều giá trị thuộc nhiều loại khác nhau trong một biến. Chúng được gom lại với nhau thành 1 nhóm trong một cấu trúc và chúng ta có thể truy cập vào dựa trên các trường của struct.
Ví dụ về kiểu dữ liệu trong C Struct:
struct học sinh {
char tên[20];
int tuổi;
float lớp;
};
struct học sinh s1 = {"Nga", 16, 10.5};
Như trên, mình đã tạo một kiểu dữ liệu đặt tên là học sinh, và mình có kết hợp kiểu dữ liệu số nguyên, ký tự và float.
Lời kết
Trên đây là các kiểu dữ liệu trong C phổ biến nhất, hy vọng bạn đã có những kiến thức bổ ích về chủ đề này. IoTZone cũng có nhiều bài viết khác về lập trình C, bạn có thể tham khảo trên blog IoTZone nhé!