C语言入门教程

第一阶段:启程准备

1. C语言是什么?

C语言是一种经典的、使用非常广泛的高级计算机编程语言。但它又非常接近计算机底层(硬件),因此常被称为“中级语言”或“系统编程语言”。

  • 特点:高效、灵活、功能强大。
  • 用途:操作系统(如Windows、Linux)、嵌入式系统(如单片机、智能家电)、驱动程序、编译器、游戏开发等。
  • 地位:是现代许多高级语言(如C++, C#, Java, Python)的基础。学好C语言,对理解计算机原理和学习其他语言大有裨益。
2. 搭建开发环境

要编写和运行C语言程序,你需要两个工具:

  1. 代码编辑器:用于书写代码。例如:Visual Studio Code, Notepad++, 或任何纯文本编辑器。
  2. 编译器:用于将你写的“高级语言”代码翻译成计算机能理解的“机器语言”。

推荐给新手的方案:使用集成开发环境(IDE)
IDE将编辑器和编译器等功能集成在一起,方便使用。

  • Windows: Dev-C++Code::Blocks
    • 轻量级,安装简单,非常适合初学者。
  • Mac/Linux: 通常自带GCC编译器。你可以使用终端(Terminal)和任何文本编辑器,或者安装 Xcode(Mac)Code::Blocks

以Dev-C++为例,第一个程序“Hello, World!”

  1. 安装并打开Dev-C++
  2. 点击 文件 -> 新建 -> 源代码
  3. 输入以下代码:
#include <stdio.h>  // 包含标准输入输出头文件

int main() {        // 主函数,程序的入口
    printf("Hello, World!\n"); // 在屏幕上输出 "Hello, World!"
    return 0;       // 程序正常结束
}
  1. 点击 文件 -> 保存为...,将文件保存为 hello.c
  2. 点击 运行 -> 编译运行(或按 F11)。如果一切正常,会弹出一个黑色窗口,显示 Hello, World!

恭喜你,你写出了第一个C程序!


第二阶段:核心语法基础

让我们逐行分析上面的“Hello, World!”程序,并学习核心概念。

1. 基本结构
  • #include <stdio.h>预处理指令。它告诉编译器在编译之前,先把 stdio.h(标准输入输出头文件)的内容包含进来。有了它,我们才能使用 printf 这样的输入输出函数。
  • int main() { ... }主函数。每个C程序都必须有且仅有一个 main 函数。程序从这里开始执行。
  • { }:花括号,定义了函数的开始和结束。
  • printf("..."):一个函数,用于将内容输出到标准输出设备(屏幕)。
  • \n转义字符,代表换行。
  • return 0;main 函数的返回值。返回0通常表示程序成功执行完毕。
  • //单行注释,用于解释代码,编译器会忽略它。多行注释用 /* ... */
2. 变量与数据类型

计算机需要存储数据,数据有不同的类型。

数据类型说明示例
int整型int age = 20;
float单精度浮点型float price = 10.5;
double双精度浮点型double salary = 8500.75;
char字符型char grade = 'A';

如何使用?

#include <stdio.h>

int main() {
    int a = 10;          // 声明一个整型变量a,并赋值为10
    float b = 3.14;      // 声明一个浮点型变量b
    char c = 'C';        // 声明一个字符型变量c

    b = 5.67;           // 改变变量b的值

    printf("a = %d\n", a);  // %d 用于输出整数
    printf("b = %.2f\n", b); // %.2f 输出浮点数,保留两位小数
    printf("c = %c\n", c);  // %c 用于输出字符

    return 0;
}
3. 输入与输出
  • 输出:printf()

    • 用于格式化输出。
    • %d%f%c 这些叫做格式说明符,它们指定了要输出的变量的类型。
  • 输入:scanf()

    • 用于从键盘接收输入。
#include <stdio.h>

int main() {
    int number;
    printf("请输入一个整数:");
    scanf("%d", &number);   // & 是“取地址符”,非常重要!
    printf("你输入的数是:%d\n", number);
    return 0;
}
4. 运算符
  • 算术运算符+, -, *, /, %(取余数)
  • 关系运算符==, !=, >, <, >=, <=
  • 逻辑运算符&&(与), ||(或), !(非)
#include <stdio.h>

int main() {
    int a = 5, b = 3;
    printf("a + b = %d\n", a + b);
    printf("a > b ? %d\n", a > b); // 输出 1 (真) 或 0 (假)
    return 0;
}

第三阶段:程序流程控制

1. 条件判断 (if...else)

让程序根据条件决定执行哪段代码。

#include <stdio.h>

int main() {
    int score;
    printf("请输入你的分数:");
    scanf("%d", &score);

    if (score >= 90) {
        printf("优秀!\n");
    } else if (score >= 60) {
        printf("及格。\n");
    } else {
        printf("不及格,要加油了!\n");
    }
    return 0;
}
2. 循环
  • for 循环:适合已知循环次数的场景。

    // 计算 1+2+3+...+100 的和
    #include <stdio.h>
    int main() {
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            sum += i; // 等价于 sum = sum + i;
        }
        printf("总和是:%d\n", sum);
        return 0;
    }
    
  • while 循环:适合在条件满足时一直循环。

    // 不断要求用户输入,直到输入0为止
    #include <stdio.h>
    int main() {
        int num;
        printf("请输入一个数字(输入0退出):");
        scanf("%d", &num);
        while (num != 0) {
            printf("你输入了:%d\n", num);
            printf("请再输入一个数字(输入0退出):");
            scanf("%d", &num);
        }
        printf("程序结束。\n");
        return 0;
    }
    

第四阶段:进阶核心概念

1. 函数

函数是一段执行特定任务的代码块,可以重复使用。这避免了代码重复,让程序更清晰。

#include <stdio.h>

// 定义一个函数,功能是求两个数的最大值
int max(int x, int y) { // x和y是“形式参数”
    if (x > y) {
        return x;
    } else {
        return y;
    }
}

int main() {
    int a = 10, b = 20;
    int result = max(a, b); // 调用函数,a和b是“实际参数”
    printf("最大值是:%d\n", result);
    return 0;
}
2. 数组

用于存储同一类型的多个数据的集合。

#include <stdio.h>

int main() {
    // 声明一个包含5个整数的数组
    int numbers[5] = {10, 20, 30, 40, 50};

    // 通过下标(索引)访问数组元素,下标从0开始
    printf("第一个元素:%d\n", numbers[0]); // 输出 10
    printf("第三个元素:%d\n", numbers[2]); // 输出 30

    // 循环遍历数组
    for (int i = 0; i < 5; i++) {
        printf("numbers[%d] = %d\n", i, numbers[i]);
    }
    return 0;
}
3. 指针(C语言的灵魂与难点)

指针是一个变量,其值是另一个变量的内存地址

#include <stdio.h>

int main() {
    int var = 10;   // 定义一个普通变量
    int *p;         // 定义一个指针变量,指向一个整数

    p = &var;       // 将变量var的地址赋值给指针p

    printf("变量var的值:%d\n", var);    // 输出:10
    printf("变量var的地址:%p\n", &var); // 输出地址(类似0x7fff...)
    printf("指针p存储的地址:%p\n", p);  // 输出同上
    printf("通过指针p访问var的值:%d\n", *p); // *p 是“解引用”,输出:10

    *p = 20; // 通过指针修改变量var的值
    printf("现在var的值是:%d\n", var); // 输出:20

    return 0;
}

为什么学指针?
指针可以让你直接操作内存,使得函数可以修改外部变量的值(通过传递地址),也是动态内存分配、数组和字符串操作的基础。


推荐资源

  • 书籍
    • 《C Primer Plus》:非常经典,讲解细致,适合零基础自学。
    • 《C程序设计语言》:C语言之父著作,简洁深刻,适合有一定基础后阅读。
  • 在线教程
    • 菜鸟教程(C语言):中文,内容全面,适合快速查阅。
    • W3Schools(C):英文,交互式练习,非常适合入门。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员buddha2080

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值