授课语音

C语言中的基本数据类型与自定义数据类型

C语言是一种功能强大的通用编程语言,提供了丰富的数据类型以满足不同应用场景的需求。掌握基本数据类型和自定义数据类型是学习C语言的基础。


1. 基本数据类型

C语言的基本数据类型可以分为以下几类:

1.1 整型(Integer)

  • 类型: intshortlonglong long
  • 特点: 表示整数类型,占用内存大小依赖于编译器和平台。
  • 修饰符: signed(有符号)和unsigned(无符号)。

代码示例

#include <stdio.h>

int main() {
    int a = 10;             // 声明一个普通整型变量
    unsigned int b = 20;    // 声明一个无符号整型变量
    short c = -5;           // 声明一个短整型变量
    long d = 100000L;       // 声明一个长整型变量
    long long e = 123456789LL; // 声明一个长长整型变量

    printf("a = %d\n", a); 
    printf("b = %u\n", b); 
    printf("c = %d\n", c); 
    printf("d = %ld\n", d); 
    printf("e = %lld\n", e);

    return 0;
}

详细中文注释

  • int a = 10; 声明了一个普通整型变量a,并赋值为10。
  • unsigned int b = 20; 声明了一个无符号整型变量b,仅能存储非负整数。
  • short c = -5; 声明了一个短整型变量c,占用内存较小。
  • long d = 100000L; 声明了一个长整型变量d,适合表示更大的整数。
  • long long e = 123456789LL; 声明了一个长长整型变量e,支持表示极大的整数范围。

1.2 浮点型(Floating Point)

  • 类型: floatdoublelong double
  • 特点: 表示带小数的实数,适合科学计算。

代码示例

#include <stdio.h>

int main() {
    float f = 3.14f;         // 声明一个单精度浮点型变量
    double g = 3.1415926;    // 声明一个双精度浮点型变量
    long double h = 3.141592653589793L; // 声明一个长双精度浮点型变量

    printf("f = %.2f\n", f); 
    printf("g = %.7f\n", g); 
    printf("h = %.15Lf\n", h);

    return 0;
}

详细中文注释

  • float f = 3.14f; 单精度浮点型,适合对精度要求不高的场景。
  • double g = 3.1415926; 双精度浮点型,精度比float更高。
  • long double h = 3.141592653589793L; 长双精度浮点型,适合高精度运算。

2. 自定义数据类型

C语言允许用户创建自己的数据类型,以提高程序的可读性和模块化。

2.1 typedef 关键字

  • 用于为已有类型定义新的类型名。

代码示例

#include <stdio.h>

typedef unsigned int uint; // 为无符号整型定义新类型名

int main() {
    uint x = 100; // 使用自定义类型名声明变量
    printf("x = %u\n", x);
    return 0;
}

详细中文注释

  • typedef unsigned int uint; 定义uint作为unsigned int的别名。
  • uint x = 100; 使用自定义类型名uint声明变量x

2.2 结构体(struct

  • 用于定义由多个不同类型数据组成的复杂数据类型。

代码示例

#include <stdio.h>

// 定义一个结构体类型
struct Student {
    int id;           // 学号
    char name[50];    // 姓名
    float score;      // 分数
};

int main() {
    struct Student s1 = {1, "张三", 90.5}; // 定义并初始化结构体变量

    printf("学号: %d\n", s1.id);
    printf("姓名: %s\n", s1.name);
    printf("分数: %.1f\n", s1.score);

    return 0;
}

详细中文注释

  • struct Student 定义了一个名为Student的结构体类型。
  • struct Student s1 声明了一个结构体变量s1
  • s1.id = 1; 访问并赋值结构体的id字段。

2.3 枚举类型(enum

  • 用于定义一组具名的整数常量。

代码示例

#include <stdio.h>

enum Day { MON, TUE, WED, THU, FRI, SAT, SUN };

int main() {
    enum Day today = WED; // 定义并初始化枚举变量
    printf("今天是: %d\n", today);
    return 0;
}

详细中文注释

  • enum Day 定义了一个表示星期的枚举类型。
  • 枚举变量today被初始化为WED,对应值为2(从0开始计数)。

2.4 联合体(union

  • 用于节省内存,所有成员共享一块内存。

代码示例

#include <stdio.h>

// 定义一个联合体类型
union Data {
    int i;
    float f;
    char str[20];
};

int main() {
    union Data data;

    data.i = 10;
    printf("data.i = %d\n", data.i);

    data.f = 3.14;
    printf("data.f = %.2f\n", data.f);

    sprintf(data.str, "Hello");
    printf("data.str = %s\n", data.str);

    return 0;
}

详细中文注释

  • union Data 定义了一个联合体,成员包括intfloat和字符串。
  • 联合体的所有成员共享内存,因此每次只能保存一个值。

通过以上知识和代码案例,掌握C语言的基本数据类型与自定义数据类型可以为编程奠定坚实基础。

去1:1私密咨询

系列课程: