📜  C教程(1)

📅  最后修改于: 2023-12-03 15:00:12.335000             🧑  作者: Mango

C教程

C语言是一种很古老的通用编程语言,它首次出现于1972年,是目前使用最广泛的编程语言之一。C语言的特点包括效率高、运行速度快、可移植性强、适用范围广等。

环境搭建
编辑器

C语言可以使用很多编辑器进行编写,比如:Visual Studio Code、Sublime Text、Atom等。本教程建议使用Visual Studio Code,因为它是一个轻量级、免费、开源的代码编辑器,支持C语言的所有功能,并且可通过插件进行扩展,可以为C语言的开发提供更多的便利。

编译器

编写好的C语言程序需要编译成机器语言才能在计算机上运行,可以使用多种编译器进行编译,比如:gcc、clang等。本教程建议使用gcc编译器,因为它是一个免费、开源的编译器,支持多平台,而且被广泛应用于Linux系统中。在Windows系统中可以通过安装MinGW来获取gcc编译器。

C语言基础
输出HELLO WORLD

下面是一个输出HELLO WORLD的示例程序。

#include <stdio.h>

int main()
{
    printf("HELLO WORLD\n");
    return 0;
}

代码解析:

  1. #include <stdio.h>是一个头文件,用来包含C标准库中的输入输出函数。
  2. int main()是程序的入口函数,每一个C程序都必须有一个入口函数,main函数可以返回一个整型值,返回0表示程序正常结束。
  3. printf("HELLO WORLD\n");是一个输出函数,用来向标准输出设备(通常是终端窗口)输出字符串。
  4. return 0;表示程序正常结束,并返回0。
常量和变量

在C语言中可以定义常量和变量,常量是值不会改变的量,变量是值可以改变的量。

常量定义

可以使用#define关键字来定义常量,在程序中使用常量的好处在于可以方便地修改和维护,同时也有利于程序的可读性。

#include <stdio.h>

#define PI 3.1415926

int main()
{
    double r = 5.0;
    double s = PI * r * r;
    printf("s = %f\n", s);  // 输出:s = 78.539816
    return 0;
}

代码解析:

  1. #define PI 3.1415926定义了一个常量PI,并赋值为3.1415926。
  2. double r = 5.0;定义了一个变量r,并赋值为5.0。
  3. double s = PI * r * r;计算了一个圆的面积。
  4. printf("s = %f\n", s);输出计算结果。

变量定义

在C语言中可以使用关键字intfloatdoublechar等来定义不同类型的变量。

#include <stdio.h>

int main()
{
    int a = 1;
    float b = 2.0;
    double c = 3.0;
    char d = 'A';
    printf("%d, %f, %lf, %c\n", a, b, c, d);  // 输出:1, 2.000000, 3.000000, A
    return 0;
}

代码解析:

  1. int a = 1;定义了一个整型变量a,并赋值为1。
  2. float b = 2.0;定义了一个浮点型变量b,并赋值为2.0。
  3. double c = 3.0;定义了一个双精度浮点型变量c,并赋值为3.0。
  4. char d = 'A';定义了一个字符型变量d,并赋值为'A'。
  5. printf("%d, %f, %lf, %c\n", a, b, c, d);输出变量的值。
条件语句

在C语言中可以使用ifelseswitch等关键字来实现条件判断。

if语句

if语句是一个最基本的条件语句,在程序中如果需要根据某种条件来执行特定的代码块,就可以使用if语句。

#include <stdio.h>

int main()
{
    int a = 10;
    if (a > 0)
    {
        printf("%d is a positive number.\n", a);
    }
    return 0;
}

代码解析:

  1. int a = 10;定义了一个变量a,并赋值为10。
  2. if (a > 0)如果变量a的值大于0,就执行下面的代码。
  3. printf("%d is a positive number.\n", a);输出变量a的值。

if-else语句

if-else语句可以在if语句的基础上增加一种特殊情况的处理。

#include <stdio.h>

int main()
{
    int a = -10;
    if (a > 0)
    {
        printf("%d is a positive number.\n", a);
    }
    else
    {
        printf("%d is a negative number.\n", a);
    }
    return 0;
}

代码解析:

  1. int a = -10;定义了一个变量a,并赋值为-10。
  2. if (a > 0)如果变量a的值大于0,就输出:"10 is a positive number."。
  3. else如果变量a的值小于等于0,就输出:"10 is a negative number."。

switch语句

switch语句可以根据某个变量的值来判断执行特定的代码块。

#include <stdio.h>

int main()
{
    char grade = 'B';
    switch (grade)
    {
        case 'A':
            printf("Excellent!\n");
            break;
        case 'B':
        case 'C':
            printf("Well done.\n");
            break;
        case 'D':
            printf("You passed.\n");
            break;
        case 'F':
            printf("Better try again.\n");
            break;
        default:
            printf("Invalid grade.\n");
    }
    return 0;
}

代码解析:

  1. char grade = 'B';定义了一个变量grade,并赋值为'B'。
  2. switch (grade)根据变量grade的值来判断执行特定的代码块。
  3. case 'A':如果变量grade的值为'A',就输出:"Excellent!"。
  4. case 'B':如果变量grade的值为'B',就输出:"Well done."。
  5. case 'C':如果变量grade的值为'C',就输出:"Well done."。
  6. case 'D':如果变量grade的值为'D',就输出:"You passed."。
  7. case 'F':如果变量grade的值为'F',就输出:"Better try again."。
  8. default:如果变量grade的值不为任何一个case,就输出:"Invalid grade."。
C语言进阶
数组和指针

C语言中的数组和指针非常重要,需要掌握它们的基本操作。

数组

数组是一种存储同类型数据的集合,在C语言中可以使用数组来存储一组连续的数据。数组的下标从0开始,可以使用下标来访问数组中的元素,数组的长度一旦确定就不能改变。

#include <stdio.h>

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

代码解析:

  1. int a[5] = {1, 2, 3, 4, 5};定义了一个长度为5的整型数组a,并初始化了数组中的元素。
  2. for (int i = 0; i < 5; i++)使用循环来遍历数组a中的元素。
  3. printf("%d\n", a[i]);输出每个元素的值。

指针

指针是一个非常难以理解的概念,在C语言中指针可以用来访问变量的地址。

#include <stdio.h>

int main()
{
    int a = 10;
    int *p;  // 定义一个指针变量p
    p = &a;  // 将变量a的地址赋值给指针变量p
    printf("a 的值是 %d\n", a);
    printf("a 的地址是 %p\n", &a);
    printf("p 的值是 %p\n", p);
    printf("*p 的值是 %d\n", *p);
    return 0;
}

代码解析:

  1. int *p;定义了一个整型指针变量p。
  2. p = &a;将变量a的地址赋值给指针变量p。
  3. printf("a 的值是 %d\n", a);输出变量a的值。
  4. printf("a 的地址是 %p\n", &a);输出变量a的地址。
  5. printf("p 的值是 %p\n", p);输出指针变量p的值(即变量a的地址)。
  6. printf("*p 的值是 %d\n", *p);输出指针变量p所指向的内存单元的值(即变量a的值)。
函数

在C语言中函数是非常重要的,可以帮助程序员将代码模块化,便于重用和维护。

函数定义

函数定义包括函数名、形参列表和函数体。C语言中函数定义的一般形式为:

return_type function_name(parameter_list)
{
    // 函数体
}
#include <stdio.h>

int max(int a, int b)
{
    return a > b ? a : b;
}

int main()
{
    int a = 1;
    int b = 2;
    int c = max(a, b);
    printf("max = %d\n", c);
    return 0;
}

代码解析:

  1. int max(int a, int b)定义了一个返回整型值的函数max,并传入两个整型参数a和b。
  2. return a > b ? a : b;如果a大于b返回a,否则返回b。
  3. int c = max(a, b);调用函数max,并传入a和b的值。
  4. printf("max = %d\n", c);输出max的值。

函数指针

函数指针是指向函数的指针变量,可以使用函数指针来调用函数。

#include <stdio.h>

int max(int a, int b)
{
    return a > b ? a : b;
}

int main()
{
    int (*p)(int, int);  // 声明一个函数指针变量p
    p = max;  // 将函数max的地址赋值给指针变量p
    int a = 1;
    int b = 2;
    int c = p(a, b);  // 使用函数指针来调用函数max
    printf("max = %d\n", c);
    return 0;
}

代码解析:

  1. int (*p)(int, int);定义了一个函数指针变量p。
  2. p = max;将函数max的地址赋值给指针变量p。
  3. int c = p(a, b);使用函数指针来调用函数max。
  4. printf("max = %d\n", c);输出max的值。
总结

C语言是一门非常经典的编程语言,对于程序员来说掌握C语言非常有必要。本教程简单介绍了C语言的基础语法和高级特性,希望对读者有所帮助。