必要的C语言
课程推荐
翁凯老师的C语言程序设计是我上的最好的中文C语言课程
Gcc+Vim is all your need
开发C/C++的项目或者完成Lab,vscode当然是最推荐的IDE(还需要学会写Makefile )
但在了解C和系统原理的阶段,vim和gcc就够了
Vim入门
vim HelloWorld.txt
键入 i
编辑 输入任意信息,如Hello World
键入 [ESC]
键入:wq 保存退出
更多见Vim入门
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 更多见gcc入门
其实看完C语言课程下面就可以不用看了
基础语法
介绍C语言的基础语法时,通常会从"Hello, World!"程序开始,然后逐步讨论变量、数据类型、控制流和函数等概念
Hello, World! 程序:
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}这是C语言中最简单的程序,它使用了printf函数来输出文本。
变量和数据类型:
#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;
}控制流 - 条件语句:
#include <stdio.h>
int main() {
int num = 10;
if (num > 0) {
printf("这个数字是正数\n");
} else if (num < 0) {
printf("这个数字是负数\n");
} else {
printf("这个数字是零\n");
}
return 0;
}控制流 - 循环:
#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;
}函数:
#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
声明和初始化指针:
#include <stdio.h>
int main() {
int num = 42;
int *ptr; // 声明整型指针
ptr = # // 将指针指向num的地址
printf("num的值:%d\n", num);
printf("指针ptr的值:%p\n", (void *)ptr); // 打印指针的地址
printf("指针ptr指向的值:%d\n", *ptr); // 通过指针访问num的值
return 0;
}指针的算术操作:
#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;
}指针和函数:
#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