Skip to content

Commit

Permalink
doc: Update document.
Browse files Browse the repository at this point in the history
  • Loading branch information
jaywcjlove committed May 2, 2022
1 parent f19242e commit dcdba42
Show file tree
Hide file tree
Showing 25 changed files with 1,907 additions and 38 deletions.
32 changes: 16 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,24 +34,24 @@ C 和 C++ 的主要区别在于 C++ 支持类和对象,而 C 不支持
- [C 输出(打印文本)Output](docs/c_output.md)
- [C 注释 Comments](docs/c_comments.md)
- [C 变量 Variables](docs/c_variables.md)
- [C Data Types](docs/c_data_types.md)
- [C Constants](docs/c_constants.md)
- [C Operators](docs/c_operators.md)
- [C 数据类型 Data Types](docs/c_data_types.md)
- [C 常量 Constants](docs/c_constants.md)
- [C 运算符 Operators](docs/c_operators.md)
- [C If...Else](docs/c_conditions.md)
- [C Switch](docs/c_switch.md)
- [C While Loop](docs/c_while_loop.md)
- [C For Loop](docs/c_for_loop.md)
- [C Break/Continue](docs/c_break_continue.md)
- [C Arrays](docs/c_arrays.md)
- [C Strings](docs/c_strings.md)
- [C C While 循环](docs/c_while_loop.md)
- [C For 循环](docs/c_for_loop.md)
- [C 跳出循环 Break/Continue](docs/c_break_continue.md)
- [C 数组 Arrays](docs/c_arrays.md)
- [C 字符串 Strings](docs/c_strings.md)
- [C 用户输入 User Input](docs/c_user_input.md)
- [C Memory Address](docs/c_memory_address.md)
- [C Pointers](docs/c_pointers.md)
- [C Functions](docs/c_functions.md)
- [C Function Parameters](docs/c_functions_parameters.md)
- [C Function Declaration](docs/c_functions_decl.md)
- [C Recursion](docs/c_functions_recursion.md)
- [C Math Functions](docs/c_math.md)
- [C Structures](docs/c_structs.md)
- [C 内存地址 Memory Address](docs/c_memory_address.md)
- [C 指针 Pointers](docs/c_pointers.md)
- [C 函数 Functions](docs/c_functions.md)
- [C 函数参数](docs/c_functions_parameters.md)
- [C 函数声明](docs/c_functions_decl.md)
- [C 递归](docs/c_functions_recursion.md)
- [C 数学函数](docs/c_math.md)
- [C 结构](docs/c_structs.md)

<!--idoc:ignore:end-->
80 changes: 80 additions & 0 deletions docs/c_arrays.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
C 数组 Arrays
===

数组用于在单个变量中存储多个值,而不是为每个值声明单独的变量。

要创建一个数组,请定义数据类型(如`int`)并指定数组的名称,后跟**方括号`[]`**

要向其中插入值,请在花括号 `{}` 内使用逗号 `,` 分隔的列表:

```c
int myNumbers[] = {25, 50, 75, 100};
```
我们现在创建了一个包含四个整数的数组的变量。
## 访问数组的元素
要访问数组元素,请参考其**索引号**。
数组索引以 **0** 开头:`[0]` 是第一个元素。`[1]` 是第二个元素,依此类推。
此语句访问 `myNumbers` 中的**第一个元素 [0]** 的值:
```c
int myNumbers[] = {25, 50, 75, 100};
printf("%d", myNumbers[0]);
// 输出 25
```

## 更改数组元素

要更改特定元素的值,请参阅索引号:

```c
myNumbers[0] = 33;
```

```c
int myNumbers[] = {25, 50, 75, 100};
myNumbers[0] = 33;

printf("%d", myNumbers[0]);

// 现在输出 33 而不是 25
```
## 循环遍历数组
您可以使用 [`for`](./c_for_loop.md) 循环遍历数组元素。
以下示例输出 `myNumbers` 数组中的所有元素:
```c
int myNumbers[] = {25, 50, 75, 100};
int i;
for (i = 0; i < 4; i++) {
  printf("%d\n", myNumbers[i]);
}
```

## 设置数组大小

另一种创建数组的常用方法是指定数组的大小,然后再添加元素:

```c
// 声明一个由四个整数组成的数组:
int myNumbers[4];

// 添加元素
myNumbers[0] = 25;
myNumbers[1] = 50;
myNumbers[2] = 75;
myNumbers[3] = 100;
```

使用这种方法,**你必须知道数组的大小,**才能让程序存储足够的内存。

您无法在创建后更改数组的大小。
145 changes: 145 additions & 0 deletions docs/c_break_continue.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
C 跳出循环 Break/Continue
===

## Break

您已经看过本教程前面章节中使用的 `break` 语句。 它用于“跳出” [`switch`](./c_switch.md) 语句。

`break` 语句也可用于跳出**循环**

这个例子在 `i` 等于 4 时跳出循环:


```c
int i;

for (i = 0; i < 10; i++) {
if (i == 4) {
break;
}
printf("%d\n", i);
}
```

## Continue

如果指定条件发生,`continue` 语句会中断一次迭代(在循环中),并继续循环中的下一次迭代。

此示例跳过 4 的值:

```c
int i;

for (i = 0; i < 10; i++) {
if (i == 4) {
continue;
}
printf("%d\n", i);
}
```

## 在 While 循环中中断并继续

您还可以在 `while` 循环中使用 `break``continue`

### Break 示例

```c
int i = 0;

while (i < 10) {
if (i == 4) {
break;
}
printf("%d\n", i);
i++;
}
```

### Continue 示例

```c
int i = 0;

while (i < 10) {
i++;
if (i == 4) {
continue;
}
printf("%d\n", i);
}
```


## break 示例

```c
#include <stdio.h>
int main(){
int i=1, sum=0;
while(1){ // 循环条件为死循环
sum+=i;
i++;
if(i>100) break;
}
printf("%d\n", sum);
return 0;
}
// 运行结果:5050
```

`while` 循环条件为 `1`,是一个死循环。当执行到第 `100` 次循环的时候,计算完 `i++;``i` 的值为 `101`,此时 `if` 语句的条件 `i> 100` 成立,执行 `break;` 语句,结束循环

```c
#include <stdio.h>
int main(){
int i=1, j;
while(1){ // 外层循环
j=1;
while(1){ // 内层循环
printf("%-4d", i*j);
j++;
if(j>4) break; // 跳出内层循环
}
printf("\n");
i++;
if(i>4) break; // 跳出外层循环
}
return 0;
}
// 运行结果:
// 1 2 3 4
// 2 4 6 8
// 3 6 9 12
// 4 8 12 16
```

`j>4` 成立时,执行 `break;`,跳出内层循环;外层循环依然执行,直到 `i>4` 成立,跳出外层循环。内层循环共执行了 `4` 次,外层循环共执行了 `1` 次。

## continue 示例

语句的作用是跳过循环体中剩余的语句而强制进入下一次循环。`continue` 语句只用在 `while`[`for`](c_for_loop.md) 循环中,常与 [`if`](./c_conditions.md) 条件语句一起使用,判断条件是否成立。

```c
#include <stdio.h>
int main(){
char c = 0;
while(c!='\n'){ // 回车键结束循环
c=getchar();
if(c=='4' || c=='5'){ // 按下的是数字键 4 或 5
continue; // 跳过当次循环,进入下次循环
}
putchar(c);
}
return 0;
}
// 运行结果:
// 0123456789↙
// 01236789
```

程序遇到 `while` 时,变量 `c` 的值为 `'\0'`,循环条件 `c!='\n'` 成立,开始第一次循环。`getchar()` 使程序暂停执行,等待用户输入,直到用户按下回车键才开始读取字符。

本例我们输入的是 `0123456789`,当读取到 `4``5` 时,`if` 的条件 `c=='4'||c=='5'`成立,就执行 `continue` 语句,结束当前循环,直接进入下一次循环,也就是说 `putchar(c);` 不会被执行到。而读取到其他数字时,`if` 的条件不成立,`continue` 语句不会被执行到,`putchar(c);` 就会输出读取到的字符。

`break``continue` 的对比:`break` 用来结束所有循环,循环语句不再有执行的机会;`continue` 用来结束本次循环,直接跳到下一次循环,如果循环条件成立,还会继续循环。
Empty file removed docs/c_compiler.md
Empty file.
Loading

0 comments on commit dcdba42

Please sign in to comment.