📜  初学者的 C 编程 – 20 天课程!(1)

📅  最后修改于: 2023-12-03 14:50:16.844000             🧑  作者: Mango

初学者的 C 编程 – 20 天课程!

欢迎来到本课程!本课程将为你提供从零开始学习 C 编程的经验。在 20 天内,你将掌握 C 编程的大部分基础知识和实践经验。在本课程中,你将学习如下知识和技能:

  • Day 1-5: C 语言的基本概念、变量、数据类型、运算符、控制结构、函数等。
  • Day 6-10: 数组、指针、字符串等高级数据类型以及它们的使用方法。
  • Day 11-15: 结构体、联合体、枚举类型等高级数据类型以及它们的使用方法。
  • Day 16-20: 文件操作、预处理器、指针进阶、动态内存分配等高级主题。
Day 1-5

在第一到第五天,你会学到 C 语言的基本概念、变量、数据类型、运算符、控制结构、函数等。

什么是 C 语言?

C 语言是一种高级编程语言,由美国贝尔实验室的 Dennis M. Ritchie 带领团队在 1972 年开发出来。

C 语言具有高效性、可移植性、可扩展性等特点,在计算机编程中被广泛使用。

变量和数据类型

C 语言支持多种数据类型,如整型、浮点型、字符型、枚举型、结构体等。在 C 语言中,变量是一个用来存储具体数值或数据地址的位置。在定义变量时需要声明数据类型。

以下是一个简单的声明变量的例子:

int age = 18;
float pi = 3.14159;
char name[] = "Alice";
运算符

C 语言支持大量运算符,包括算术运算符、比较运算符、逻辑运算符等。运算符可以对常量、变量和表达式进行操作。

以下是一个简单的运算符的例子:

int a = 10;
int b = 20;
int c;

c = a + b;
c = a - b;
c = a * b;
c = a / b;
c = a % b;
控制结构

C 语言提供很多控制结构,如 if 语句、while 语句、for 语句、switch 语句等。

以下是一个简单的 if 语句的例子:

if (a > b) {
    printf("a is greater than b\n");
}
函数

函数是 C 语言的基础单位。函数可以封装一段特定的代码,以便多次使用。在 C 语言中,函数由函数头、函数返回类型、函数名、函数参数和函数体组成。

以下是一个简单的函数的例子:

int max(int a, int b) {
    if (a > b) {
        return a;
    } else {
        return b;
    }
}
Day 6-10

在第六到第十天,你会学到数组、指针、字符串等高级数据类型以及它们的使用方法。

数组

数组是 C 语言中的一种数据类型,它可以存储一系列具有相同数据类型的值。在使用数组时,每个数组元素可以通过下标进行访问。

以下是一个简单的数组的例子:

int arr[5];

arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;
指针

指针是 C 语言中的一种数据类型,它可以存储内存地址。指针可以用于访问存储在内存中的变量或数据结构。

以下是一个简单的指针的例子:

int *ptr;

int age = 18;
ptr = &age;

printf("%d", *ptr); // 输出 18
字符串

字符串是 C 语言中的一种特殊类型的数组。字符串是由一系列字符组成的,以 null(0) 结尾。在 C 语言中,字符串可以使用字符数组或指针进行表示。

以下是一个简单的字符串的例子:

char str[] = "Hello, World";

printf("%s", str); // 输出 Hello, World
Day 11-15

在第十一到第十五天,你会学到结构体、联合体、枚举类型等高级数据类型以及它们的使用方法。

结构体

结构体是 C 语言中的一种自定义类型,它可以组合多个变量为一个整体。在结构体中,每个变量称为成员。

以下是一个简单的结构体的例子:

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

struct Person p = {"Alice", 18, 1.65};
printf("%s %d %f", p.name, p.age, p.height);
联合体

联合体是 C 语言中的一种特殊的结构体,它可以使多个变量共享同一段内存空间。在使用联合体时,只能使用其中一个成员,并且不同成员的类型必须相同。

以下是一个简单的联合体的例子:

union Data {
    int i;
    float f;
    char str[20];
};

union Data data;

data.i = 10;
printf("%d %f %s", data.i, data.f, data.str);
枚举类型

枚举类型是 C 语言中的一种自定义类型,它可以列出一组可能的值。每个值都可以用一个整数常量来表示。

以下是一个简单的枚举类型的例子:

enum Color {
    Red,
    Green,
    Blue
};

enum Color c = Blue;
printf("%d", c); // 输出 2
Day 16-20

在第十六到第二十天,你会学到文件操作、预处理器、指针进阶、动态内存分配等高级主题。

文件操作

文件操作是 C 语言中的一种高级主题,它可以让你读写文件。文件操作需要用到标准 I/O 库。

以下是一个简单的读写文件的例子:

#include <stdio.h>

int main() {
    FILE *fp;

    fp = fopen("test.txt", "w+");
    fprintf(fp, "This is testing for fprintf...\n");
    fputs("This is testing for fputs...\n", fp);
    fclose(fp);

    return 0;
}
预处理器

预处理器是 C 语言中的一种特殊工具,它可以在编译程序之前对源代码进行处理。预处理器可以用来定义常量、宏以及条件编译等。

以下是一个简单的宏的例子:

#include <stdio.h>

#define PI 3.14159

int main() {
    printf("%f", PI);
    return 0;
}
指针进阶

指针是 C 语言中的一种强大的数据类型,它可以让你直接操作内存。指针进阶可以让你更好地理解指针,并且学习如何使用指针进行高级操作。

以下是一个简单的指针进阶的例子:

#include <stdio.h>

int main() {
    int arr[5] = {10, 20, 30, 40, 50};
    int *ptr = arr;

    for (int i = 0; i < 5; i++) {
        printf("%d ", *(ptr + i));
    }

    return 0;
}
动态内存分配

动态内存分配是 C 语言中的一种高级主题,它可以让你在程序运行时动态地分配内存。动态内存分配需要用到标准库函数 malloc 和 free。

以下是一个简单的动态内存分配的例子:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *ptr = NULL;
    ptr = (int*)malloc(5 * sizeof(int));

    if (ptr == NULL) {
        printf("Memory not allocated.\n");
        exit(0);
    } else {
        printf("Memory allocated.\n");
    }

    free(ptr);
    printf("Memory freed.\n");

    return 0;
}

本课程只是 C 编程的一个入门级指南,如果你想继续深入学习 C 语言,还有许多重要的主题等待你去探索。