C语言作为一门历史悠久的编程语言,以其简洁、高效和可移植性等特点,被广泛应用于操作系统、嵌入式系统、编译器等领域。对于初学者来说,掌握C语言是迈向计算机编程世界的重要一步。以下是从基础到实践,全方位学习C语言的资料大全。

一、C语言基础知识

1.1 数据类型与变量

  • 基本数据类型:整型(int)、浮点型(float)、字符型(char)等。
  • 变量:变量的声明、初始化和使用。
#include <stdio.h>

int main() {
    int age = 20;
    float pi = 3.14159;
    char grade = 'A';
    return 0;
}

1.2 运算符

  • 算术运算符:加、减、乘、除等。
  • 赋值运算符:=、+=、-=等。
  • 比较运算符:==、!=、<、>、<=、>=等。

1.3 控制语句

  • 条件语句:if-else、switch-case。
  • 循环语句:for、while、do-while。
#include <stdio.h>

int main() {
    int i = 1;
    while (i <= 5) {
        printf("%d\n", i);
        i++;
    }
    return 0;
}

二、函数与模块

2.1 函数定义与调用

  • 函数:函数的声明、定义和调用。
  • 参数传递:值传递和地址传递。
#include <stdio.h>

void printMessage() {
    printf("Hello, World!\n");
}

int main() {
    printMessage();
    return 0;
}

2.2 模块化编程

  • 头文件:函数原型声明和宏定义。
  • 源文件:函数实现。

三、指针与数组

3.1 指针

  • 指针定义:指针的声明和初始化。
  • 指针运算:指针的加减、比较等。
#include <stdio.h>

int main() {
    int a = 10;
    int *ptr = &a;
    printf("%d\n", *ptr); // 输出:10
    return 0;
}

3.2 数组

  • 数组定义:一维数组和多维数组的声明。
  • 数组操作:数组的初始化、访问和遍历。
#include <stdio.h>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    for (int i = 0; i < 5; i++) {
        printf("%d\n", arr[i]);
    }
    return 0;
}

四、结构体与联合体

4.1 结构体

  • 结构体定义:结构体成员的声明和初始化。
  • 结构体操作:结构体的访问和修改。
#include <stdio.h>

struct Person {
    char name[50];
    int age;
};

int main() {
    struct Person p;
    strcpy(p.name, "Alice");
    p.age = 30;
    printf("Name: %s, Age: %d\n", p.name, p.age);
    return 0;
}

4.2 联合体

  • 联合体定义:联合体成员的声明和初始化。
  • 联合体操作:联合体的访问和修改。
#include <stdio.h>

union Data {
    int i;
    float f;
};

int main() {
    union Data u;
    u.i = 10;
    printf("%d\n", u.i); // 输出:10
    u.f = 3.14;
    printf("%f\n", u.f); // 输出:3.14
    return 0;
}

五、文件操作与动态内存分配

5.1 文件操作

  • 文件打开:fopen、freopen。
  • 文件读写:fread、fwrite。
  • 文件关闭:fclose。
#include <stdio.h>

int main() {
    FILE *fp = fopen("example.txt", "w");
    if (fp == NULL) {
        perror("File opening failed");
        return -1;
    }
    fprintf(fp, "Hello, World!\n");
    fclose(fp);
    return 0;
}

5.2 动态内存分配

  • malloc:分配内存。
  • free:释放内存。
#include <stdio.h>
#include <stdlib.h>

int main() {
    int *arr = (int *)malloc(5 * sizeof(int));
    if (arr == NULL) {
        perror("Memory allocation failed");
        return -1;
    }
    for (int i = 0; i < 5; i++) {
        arr[i] = i;
    }
    free(arr);
    return 0;
}

六、项目实践

6.1 控制台小游戏

  • 猜数字游戏:编写一个猜数字的游戏,用户输入猜测的数字,程序判断是否正确。

6.2 计算器程序

  • 实现基本的计算器功能:支持加、减、乘、除等运算。

通过以上内容,相信你已经对C语言有了基本的了解。接下来,可以通过实践项目来提高自己的编程能力。祝你在学习C语言的路上越走越远!