Trong C, các kiểu dữ liệu tham chiếu đến một hệ thống mở rộng được sử dụng để khai báo các biến hoặc các hàm của các kiểu khác nhau. Kiểu dữ liệu trong C của biến xác định bao nhiêu không gian nó chiếm trong bộ nhớ lưu trữ và cách thức lưu trữ mẫu bit.
Các kiểu dữ liệu trong C có thể được phân loại như sau:
STT
Phân loại và giải thích
1
Các loại cơ bản:
Nó là kiểu dạng số học, trong đó được phân loại thành 2 loại chính:
- Các loại số nguyên.
- Các loại dấu phẩy động.
2
Các loại được liệt kê:
Đây cũng là kiểu dạng số học nhưng chúng được sử dụng để xác định các biến mà chỉ có thể gán một số giá trị nguyên rời rạc nhất định trong suốt chương trình.
3
Loại void:
Khoảng trống chỉ định loại cho biết không có giá trị nào.
4
Các loại phát triển từ cơ bản:
Chúng bao gồm:
- Kiểu con trỏ
- Kiểu mảng
- Kiểu cấu trúc
- Kiểu liên kết
- Các loại chức năng.
Các kiểu mảng và kiểu cấu trúc được gọi chung là các loại tổng hợp. Loại hàm xác định loại giá trị trả về của hàm. Chúng ta sẽ thấy các loại cơ bản trong phần dưới đây, xét một số các trường hợp trong đó các kiểu dữ liệu của C được sử dụng.
1. Kiểu số nguyên
Bảng sau cung cấp chi tiết về các loại số nguyên chuẩn với kích thước lưu trữ và phạm vi giá trị của chúng:
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
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
Để có được kích thước chính xác của một loại hoặc một biến trên một nền tảng cụ thể, bạn có thể sử dụng toán tử sizeof . Các biểu thức sizeof (loại) mang lại kích thước lưu trữ của đối tượng hoặc loại theo byte. Đưa ra dưới đây là một ví dụ để có được kích thước của loại int trên bất kỳ máy nào -
Ví dụ:
include
include
int main() {
printf("Storage size for int : %d \n", sizeof(int));
return 0;
}
Khi bạn biên dịch và thực thi chương trình trên, nó tạo ra kết quả sau trên Linux:
Storage size for int : 4
2. Kiểu dấu phẩy động
Bảng sau cung cấp chi tiết về các loại dấu phẩy động tiêu chuẩn với kích thước lưu trữ và phạm vi giá trị và độ chính xác của chúng:
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
Tệp header float.h định nghĩa các macro cho phép bạn sử dụng các giá trị này và các chi tiết khác về biểu diễn nhị phân của các số thực trong các chương trình. Ví dụ sau in ra cỡ của kiểu float cũng như dải giá trị của nó:
Ví dụ:
include
include
int main() {
printf("Storage size for float : %d \n", sizeof(float));
printf("Minimum float positive value: %E\n", FLT_MIN );
printf("Maximum float positive value: %E\n", FLT_MAX );
printf("Precision value: %d\n", FLT_DIG );
return 0;
}
Khi bạn biên dịch và thực thi chương trình trên, nó tạo ra kết quả sau trên Linux như sau:
Storage size for float : 4
Minimum float positive value: 1.175494E-38
Maximum float positive value: 3.402823E+38
Precision value: 6
3. Loại void
Loại void xác định rằng không có giá trị nào. Nó được sử dụng trong ba trường hợp sau:
STT
Mô tả
1
Hàm trả về là void
Có các hàm khác nhau trong C không trả về bất kỳ giá trị nào hoặc bạn có thể nói chúng trả về void. Một hàm không có giá trị trả lại có kiểu trả về là void. Ví dụ: void exit (int status);
2
Đối số hàm làm trống
Có nhiều hàm trong C không chấp nhận bất kỳ tham số nào. Một hàm không có tham số có thể chấp nhận một khoảng trống. Ví dụ, int rand (void);
3
Con trỏ để vô hiệu
Một con trỏ của loại void * đại diện cho địa chỉ của một đối tượng, nhưng không phải là kiểu của nó. Ví dụ, một chức năng cấp phát bộ nhớ void * malloc (size_t size); trả về một con trỏ để làm mất hiệu lực mà có thể được truyền tới bất kỳ kiểu dữ liệu nào.