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:
|
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:
|
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.
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
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
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. |
Tài liệu lập trình C: