学习 C 编程语言
https://www.w3schools.com/c/index.php
C 语言创造于 1972 年,至今仍在广泛使用。学习 C 语言可以帮助我理解 Linux 内核。
C 的 Hello World
1#include <stdio.h> // 头文件,用于引用需要的库文件
2
3int main () { // 声明一个函数
4 printf("Hello World!"); // ; 是每行语句必备的
5}
插入新行
使用 \n,其他类似的用法 \t, \\, \"。
声明变量
- int
- float
- char 声明单字符
变量声明后,变量对应的值可被更改。
格式化输出
- %d 输出整数
- %f 输出小数,%.1f 输出一位小数
- %c 输出单个字母
例子:
1int studentId = 15;
2int studentAge = 23;
3float studentFee = 45.6;
4char studentGrade = 'C';
5
6printf("Student id: %d\n", studentId);
7printf("Student age: %d\n", studentAge);
8printf("Student fee: %f\n", studentFee);
9printf("Student grade: %c", studentGrade);
数据类型
- 整型 2/4 字节 %d
- 浮点型 4 字节 %f/%F
- 双精度浮点 8 字节 %lf
- 字符型 1 字节 %c
还有个 %s 用于字符串。
科学记数法: 34e2
, 23E5
。
小数精度设置: %.1f
占用内存大小使用 sizeof 查看: sizeof(variable)
类型转换:显式和隐式
常量
使用 const 定义,定义时为了和变量区分,可以用大写
操作符
分类:算术、赋值、比较、逻辑、位。
布尔值
使用该类型需要导入库 stdbool.h 到头文件
使用 bool 定义布尔值
条件从句
- if..else..
- switch
- while..
- do..while..
- for
- break/continue
数组
1int dice[] = {1, 2, 3};
2dice[0] = 4;
3printf("%d", dice[0]);
1int myNumbers[] = {23, 45, 67};
2int i;
3
4for (i = 0; i < 3; i++) {
5 printf("%d\n", myNumbers[i]);
6}
1int myNumbers[3];
2
3myNumbers[0] = 23;
4myNumbers[1] = 22;
5myNumbers[2] = 21;
1int array[] = {1, 2, 3};
2printf("%lu", sizeof(array));
上面输出数组的字节大小,要想输出长度见下面代码。
1int array[] = {1, 2, 3};
2int length = sizeof(array) / sizeof(array[0]);
3
4printf("%d", length);
1int ages[] = {20, 22, 18, 35, 48, 26, 87, 70};
2
3float avg, sum = 0;
4int i;
5
6int length = sizeof(ages) / sizeof(ages[0]);
7
8for(i = 0; i < length; i++) {
9 sum += ages[i];
10}
11
12avg = sum / length;
13
14printf("The average age is: %.2f", avg);
1int ages[] = {20, 22, 18, 35, 48, 26, 87, 70};
2
3float avg, sum = 0;
4int i;
5
6int length = sizeof(ages) / sizeof(ages[0]);
7int lowestAge = ages[0];
8
9for(i = 0; i < length; i++) {
10 if (lowestAge > ages[i]) {
11 lowestAge = ages[i];
12 }
13}
1int matrix[2][3] = { {1, 7, 9}, {7, 3, 1} };
2
3int i, j;
4for (i = 0; i < 2; i++) {
5 for (j = 0; j < 3; j++) {
6 printf("%d\n", matrix[i][j]);
7 }
8}