docs(): fixed #19

This commit is contained in:
ruanyf
2021-09-09 16:05:05 +08:00
parent c0a3347b25
commit 1aef769e3f
4 changed files with 27 additions and 2 deletions

View File

@@ -417,5 +417,20 @@ bail:
上面代码有很复杂的嵌套循环,不使用 goto 的话,想要完全跳出所有循环,写起来很麻烦。
goto 的另一个用途是提早结束多重判断。
```c
if (do_something() == ERR)
goto error;
if (do_something2() == ERR)
goto error;
if (do_something3() == ERR)
goto error;
if (do_something4() == ERR)
goto error;
```
上面示例有四个判断,只要有一个发现错误,就使用 goto 跳过后面的判断。
注意goto 只能在同一个函数之中跳转,并不能跳转到其他函数。

View File

@@ -360,6 +360,8 @@ int main(void) {
上面示例中,函数`foo()`定义在其他文件,`extern`告诉编译器当前文件不包含该函数的定义。
不过,由于函数原型默认就是`extern`,所以这里不加`extern`,效果是一样的。
### static 说明符
默认情况下,每次调用函数时,函数的内部变量都会重新初始化,不会保留上一次运行的值。`static`说明符可以改变这种行为。

View File

@@ -133,6 +133,14 @@ s[0] = 'z';
为什么字符串声明为指针时不能修改声明为数组时就可以修改原因是声明为指针时字符串是一个保存在内存“栈区”stack的常量“栈区”的值由系统管理一般都不允许修改声明为数组时字符串的副本会被拷贝到内存“堆区”heap“堆区”的值由用户管理是可以修改的。
为了提醒用户,字符串声明为指针后不得修改,可以在声明时使用`const`说明符,保证该字符串是只读的。
```c
const char* s = "ello, world!";
```
上面字符串声明为指针时,使用了`const`说明符,就保证了该字符串无法修改。一旦修改,编译器肯定会报错。
第二个差异是,指针变量可以指向其它字符串。
```c

View File

@@ -9,9 +9,9 @@ C 语言内置的数据类型,除了最基本的几种原始类型,只有数
- 复杂的物体需要使用多个变量描述,这些变量都是相关的,最好有某种机制将它们联系起来。
- 某些函数需要传入多个参数,如果一个个按照顺序传入,非常麻烦,最好能组合成一个复合结构传入。
为了解决这些问题C 语言提供了`struct`命令允许自定义复合数据类型将不同类型的值组合在一起。这样不仅为编程提供方便也有利于增强代码的可读性。C 语言没有其他语言的对象object和类class的概念struct 结构很大程度上提供了对象和类的功能,可以将它视为只有属性、没有方法的类。
为了解决这些问题C 语言提供了`struct`关键字允许自定义复合数据类型将不同类型的值组合在一起。这样不仅为编程提供方便也有利于增强代码的可读性。C 语言没有其他语言的对象object和类class的概念struct 结构很大程度上提供了对象和类的功能,可以将它视为只有属性、没有方法的类。
下面是`struct`命令自定义数据类型的一个例子。
下面是`struct`自定义数据类型的一个例子。
```c
struct fraction {