必要的C语言

课程推荐


Gcc+Vim is all your need

开发C/C++的项目或者完成Lab,vscode当然是最推荐的IDE(还需要学会写Makefile )

但在了解C和系统原理的阶段,vim和gcc就够了

Vim入门

  1. vim HelloWorld.txt

  2. 键入 i

  3. 编辑 输入任意信息,如Hello World

  4. 键入 [ESC]

  5. 键入:wq 保存退出

Gcc入门

C 语言经典的入门例子是 Hello World,下面是一示例代码:

#include <stdio.h>
int main(void)
{
printf(“Hello, world!\n”);
return 0;
}

我们假定该代码存为文件‘hello.c’。要用 gcc 编译该文件,使用下面的命令:

 gcc -g -Wall hello.c -o hello

该命令将文件‘hello.c’中的代码编译为机器码并存储在可执行文件 ‘hello’中。机器码的文件名是通过 -o 选项指定的。该选项通常作为命令行中的最后一个参数。如果被省略,输出文件默认为 ‘a.out’。

注意到如果当前目录中与可执行文件重名的文件已经存在,它将被覆盖。

选项 -Wall 开启编译器几乎所有常用的警告──强烈建议你始终使用该选项。编译器有很多其他的警告选项,但 -Wall 是最常用的。默认情况下GCC 不会产生任何警告信息。当编写 C 或 C++ 程序时编译器警告非常有助于检测程序存在的问题。 注意如果有用到math.h库等非gcc默认调用的标准库,请使用-lm参数

本例中,编译器使用了 -Wall 选项而没产生任何警告,因为示例程序是完全合法的。

选项 “”-g”” 表示在生成的目标文件中带调试信息,调试信息可以在程序异常中止产生core后,帮助分析错误产生的源头,包括产生错误的文件名和行号等非常多有用的信息。

要运行该程序,输入可执行文件的路径如下:

./hello 

其实看完C语言课程下面就可以不用看了

基础语法

介绍C语言的基础语法时,通常会从"Hello, World!"程序开始,然后逐步讨论变量、数据类型、控制流和函数等概念

  1. Hello, World! 程序:

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

这是C语言中最简单的程序,它使用了printf函数来输出文本。

  1. 变量和数据类型:

#include <stdio.h>

int main() {
    // 声明整数类型的变量
    int age = 25;
    
    // 声明浮点数类型的变量
    float salary = 50000.50;
    
    // 声明字符类型的变量
    char grade = 'A';
    
    printf("年龄:%d\n", age);
    printf("薪水:%.2f\n", salary);
    printf("等级:%c\n", grade);
    
    return 0;
}
  1. 控制流 - 条件语句:

#include <stdio.h>

int main() {
    int num = 10;
    
    if (num > 0) {
        printf("这个数字是正数\n");
    } else if (num < 0) {
        printf("这个数字是负数\n");
    } else {
        printf("这个数字是零\n");
    }
    
    return 0;
}
  1. 控制流 - 循环:

#include <stdio.h>

int main() {
    // 使用for循环输出1到10的数字
    for (int i = 1; i <= 10; i++) {
        printf("%d ", i);
    }
    printf("\n");
    
    // 使用while循环计算1到10的和
    int sum = 0;
    int j = 1;
    while (j <= 10) {
        sum += j;
        j++;
    }
    printf("1到10的和:%d\n", sum);
    
    return 0;
}
  1. 函数:

#include <stdio.h>

// 函数原型
int add(int a, int b);

int main() {
    int num1 = 5;
    int num2 = 3;
    
    int result = add(num1, num2);
    
    printf("和:%d\n", result);
    
    return 0;
}

// 函数定义
int add(int a, int b) {
    return a + b;
}

这些示例代码涵盖了C语言的一些基本语法概念,包括变量、数据类型、条件语句、循环和函数。

指针

指针在C语言中过于重要的以至于需要一节,它允许直接访问内存中的地址。

想象一下,你有一张地图,上面画着你家、学校和朋友家的位置。你用一支彩色的箭头来标记你家的位置。这个箭头告诉你如何找到你家。在C语言中,指针就像是这个箭头,它帮助你找到存储在计算机内存中的特定数据的位置。就像你可以移动箭头来指向不同的地方一样,指针可以指向不同的数据。

另一个例子是,有一串数字写在一张纸上:

10 20 30 40 50

现在,你想要找到第二个数字20,你会说“我要第二个数字!”

  • 在计算机里,纸就是内存

  • 指针的数值就是这个第几个的index

  1. 声明和初始化指针:

#include <stdio.h>

int main() {
    int num = 42;
    int *ptr; // 声明整型指针
    
    ptr = &num; // 将指针指向num的地址
    
    printf("num的值:%d\n", num);
    printf("指针ptr的值:%p\n", (void *)ptr); // 打印指针的地址
    printf("指针ptr指向的值:%d\n", *ptr); // 通过指针访问num的值
    
    return 0;
}
  1. 指针的算术操作:

#include <stdio.h>

int main() {
    int numbers[] = {1, 2, 3, 4, 5};
    int *ptr = numbers; // 指向数组的第一个元素
    
    printf("第一个元素:%d\n", *ptr);
    
    ptr++; // 移动指针到下一个元素
    printf("第二个元素:%d\n", *ptr);
    
    ptr += 2; // 移动指针两个位置
    printf("第四个元素:%d\n", *ptr);
    
    return 0;
}
  1. 指针和函数:

#include <stdio.h>

// 交换两个整数的值
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

int main() {
    int x = 5;
    int y = 10;
    
    printf("交换前:x = %d, y = %d\n", x, y);
    
    swap(&x, &y); // 传递x和y的地址给函数
    
    printf("交换后:x = %d, y = %d\n", x, y);
    
    return 0;
}

Last updated