CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
C 语言入门/课时/类型与变量
RawBlame
课时目录12 节

C 语言入门

  1. 01C 是什么
  2. 02类型与变量
  3. 03控制流与运算符
  4. 04函数
  5. 05指针与内存
  6. 06数组与字符串
  7. 07结构体与联合体
  8. 08预处理器
  9. 09编译与构建
  10. 10并发与进程
  11. 11调试与测试
  12. 12综合练习

类型与变量

整型、浮点、const、typedef。

35 分钟

类型与变量

C 的类型系统直接映射硬件宽度。对照 /roadmaps/c,掌握整型、浮点、const 与 typedef 是读懂内核、驱动与任何 C 项目的基础。

学习目标

  • 掌握基本数据类型与 sizeof
  • 使用 const 与 #define 常量
  • 用 typedef 简化类型名
  • 理解 C 中「无类、无对象」的变量模型

核心概念

基本类型

C 类型典型宽度Java 对照
char1 字节byte(语义不同)
short2 字节short
int4 字节int
long4 或 8 字节long
float / double4 / 8 字节同名
_Bool / bool¹1 字节boolean

¹ C99 起可用 <stdbool.h> 的 bool、true、false。

变量与常量

#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>

#define MAX_USERS 100
#define PI 3.14159265

typedef unsigned int user_id_t;

int main(void) {
    int count = 42;
    double price = 19.99;
    bool active = true;
    const int limit = MAX_USERS;
    user_id_t uid = 1001;

    printf("count=%d, size=%zu\n", count, sizeof(count));
    printf("uid=%u, limit=%d, pi=%.2f\n", uid, limit, PI);
    printf("int=%zu, long=%zu, ptr=%zu\n",
           sizeof(int), sizeof(long), sizeof(void *));

    /* limit = 200;  // 编译错误:const 不可改 */

    return 0;
}
  • #define:预处理宏,无类型检查
  • const:编译期只读,比宏更安全
  • stdint.h:固定宽度类型如 uint32_t,跨平台代码推荐
  • typedef:为类型起别名,不创建新类型

类型转换

C 允许隐式窄化转换(可能丢失精度)。显式转换:(double)count。与 Java 不同,C 无自动装箱。

与 C++/Java 对照

特性
C
C++
Java
布尔_Bool / boolboolboolean
字符串char[]std::stringString
常量#define / constconstexprfinal
类型别名typedefusing / typedef无(类包装)
一切皆对象否否是(基本类型除外)

C++ 的 auto、Java 的 var 在 C 中不存在;变量类型必须显式声明(或用宏生成)。

练习

  • 打印 char、int、long、double、void * 的 sizeof
  • 用 typedef 定义 score_t 为 int,写函数接受该类型
  • 对比 #define N 10 与 const int N = 10 的差异
  • 用 stdint.h 声明 uint16_t port = 8080

小结

C 类型贴近硬件;const、typedef、stdint 是规范编码的基础。 下一课学习控制流与运算符。

加载本节练习…
← 上一课C 是什么下一课 →控制流与运算符