C语言数据类型及其使用 (带示例)

目录

1. 基本数据类型

整型

浮点型

字符型

2. 构造数据类型

数组

结构体

联合体(共用体)

枚举类型

3. 指针类型

4. 空类型


在 C 语言中,数据类型是非常重要的概念,它决定了数据在内存中的存储方式、占用空间大小以及可进行的操作。C 语言的数据类型主要分为基本数据类型、构造数据类型、指针类型和空类型,下面详细介绍:

1. 基本数据类型

基本数据类型是 C 语言中最基础的数据类型,是构建其他复杂数据类型的基石。

整型
  • int
    • 说明:用于表示整数,在不同的编译器和系统环境下,其占用的字节数可能不同。一般在 32 位和 64 位系统中,int 通常占用 4 个字节(32 位),取值范围大约是 -2147483648 到 2147483647。
    • 代码示例
#include 
int main() {
    int num = 123;
    printf("整数: %d\n", num);
    return 0;
}
  • short(短整型)
    • 说明:通常占用 2 个字节(16 位),取值范围比 int 小,大约是 -32768 到 32767。
    • 代码示例
#include 
int main() {
    short s = 100;
    printf("短整型: %hd\n", s);
    return 0;
}
  • long(长整型)
    • 说明:在 32 位系统中,long 通常占用 4 个字节;在 64 位系统中,一般占用 8 个字节(64 位)。其取值范围比 int 更大。
    • 代码示例
#include 
int main() {
    long l = 123456789L;
    printf("长整型: %ld\n", l);
    return 0;
}
  • long long(更长的长整型)
    • 说明:至少占用 8 个字节,能表示更大范围的整数,取值范围大约是 -9223372036854775808 到 9223372036854775807。
    • 代码示例
#include 
int main() {
    long long ll = 123456789012345LL;
    printf("更长的长整型: %lld\n", ll);
    return 0;
}
浮点型
  • float(单精度浮点型)
    • 说明:用于表示小数,通常占用 4 个字节,能提供大约 6 - 7 位有效数字。
    • 代码示例
#include 
int main() {
    float f = 3.14f;
    printf("单精度浮点型: %f\n", f);
    return 0;
}
  • double(双精度浮点型)
    • 说明:占用 8 个字节,能提供大约 15 - 16 位有效数字,精度比 float 更高。
    • 代码示例
#include 
int main() {
    double d = 3.1415926;
    printf("双精度浮点型: %lf\n", d);
    return 0;
}
字符型
  • char
    • 说明:用于表示单个字符,占用 1 个字节。实际上存储的是字符的 ASCII 码值。
    • 代码示例
#include 
int main() {
    char ch = 'A';
    printf("字符: %c\n", ch);
    printf("字符的ASCII码值: %d\n", ch);
    return 0;
}

2. 构造数据类型

构造数据类型是由基本数据类型或其他构造数据类型组合而成的数据类型。

数组
  • 说明:是一组相同类型元素的有序集合。数组的大小在定义时需要确定,其元素可以通过下标访问。
  • 代码示例
#include 
int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    for (int i = 0; i < 5; i++) {
        printf("arr[%d] = %d\n", i, arr[i]);
    }
    return 0;
}
结构体
  • 说明:可以将不同类型的数据组合在一起,形成一个新的数据类型。结构体中的每个成员可以有不同的数据类型。
  • 代码示例
#include 
// 定义结构体
struct Student {
    char name[20];
    int age;
    float score;
};

int main() {
    struct Student s = {"Tom", 20, 85.5};
    printf("姓名: %s\n", s.name);
    printf("年龄: %d\n", s.age);
    printf("成绩: %f\n", s.score);
    return 0;
}
联合体(共用体)
  • 说明:联合体的所有成员共享同一块内存空间,同一时间只能使用其中一个成员。
  • 代码示例
#include 
// 定义联合体
union Data {
    int i;
    float f;
    char str[20];
};

int main() {
    union Data data;
    data.i = 10;
    printf("整型值: %d\n", data.i);
    data.f = 3.14f;
    printf("浮点型值: %f\n", data.f);
    return 0;
}
枚举类型
  • 说明:用于定义一组具有离散整数值的常量。枚举类型的每个枚举常量都对应一个整数值,默认从 0 开始递增。
  • 代码示例
#include 
// 定义枚举类型
enum Weekday {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
};

int main() {
    enum Weekday today = WEDNESDAY;
    printf("今天是一周中的第 %d 天(从0开始计数)\n", today);
    return 0;
}

3. 指针类型

  • 说明:指针是一种特殊的数据类型,用于存储变量的内存地址。通过指针可以间接访问和修改该地址处存储的数据。
  • 代码示例
#include 
int main() {
    int num = 10;
    int *ptr = #  // 定义一个指向整型变量的指针,并初始化为num的地址
    printf("变量num的值: %d\n", num);
    printf("指针ptr指向的值: %d\n", *ptr);
    *ptr = 20;  // 通过指针修改num的值
    printf("修改后变量num的值: %d\n", num);
    return 0;
}

4. 空类型

  • 说明void 表示空类型,主要用于以下几种情况:
    • 函数返回值为空,如 void func()
    • 函数参数为空,如 int func(void)
    • 定义通用指针,如 void *ptr,可以指向任意类型的数据,但在使用时需要进行类型转换。
  • 代码示例
#include 
// 函数返回值为空
void printMessage() {
    printf("这是一个无返回值的函数。\n");
}

// 函数参数为空
int getValue(void) {
    return 100;
}

int main() {
    printMessage();
    int val = getValue();
    printf("getValue函数返回的值: %d\n", val);

    int num = 20;
    void *ptr = #  // 定义一个void指针
    int *intPtr = (int *)ptr;  // 类型转换
    printf("通过void指针访问的值: %d\n", *intPtr);
    return 0;
}

你可能感兴趣的:(C语,c++,c#,c语言)