diff --git a/.gitignore b/.gitignore new file mode 100755 index 00000000..f0fed7ef --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +*/.DS_Store diff --git a/README.md b/README.md index 27791b56..6d884232 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ ### :page_with_curl:编程语言 +- [C](languages/c_language.md) - [Bash](languages/bash.sh) - [Go](languages/golang.go) - [Php](languages/php.php) diff --git a/languages/c_language.md b/languages/c_language.md new file mode 100644 index 00000000..db5773ab --- /dev/null +++ b/languages/c_language.md @@ -0,0 +1,63 @@ +# C 语言 + +## 注意事项 + +- C语言变量名只能是英文字母(A-Z,a-z)和数字(0-9)或者下划线(_)组成。 +- 必须是字母或者下划线开头。 +- 变量名区分大小写(如 F ≠ f ) +- 不能使用关键字对变量进行命名。 +- C语言的变量必须先声明再使用,包括实参和形参 + +### 避免使用关键字 + +``` +■ auto ■ break ■ case ■ char ■ const ■ continue■ default ■ do ■ double ■ else ■ enum ■ extern■ float ■ for ■ goto ■ if ■ int ■ long ■ register■ return ■ short ■ signed ■ sizeof ■ static ■ struct■ switch ■ typedef ■ union ■ unsigned ■ void■ volatile ■ while ■ inline ■ restrict ■ _Bool■ _Complex ■ _Imaginary ■ _Alignas ■ _Alignof ■ _Atomic ■ _Static_assert ■ _Noreturn■ _Thread_local ■ _Generic +``` +## 基础语法 + +### 基础数据类型 + +| 类型 | 符号 | 说明 | +| ------------ | ------ | ------------------------------------------ | +| 整数型 | int | 整型,通常反映了所用机器中整数的最自然长度 | +| 字符型 | char | 字符型,占用一个字节默认无符号 | +| 单精度浮点型 | float | (无) | +| 双精度浮点型 | double | (无) | + +### 格式化字符串与变量对应转换规则 + +| 格式码 | 参数 | 说明 | +| ----------- | ------ | ------------------------------------------------------------ | +| %c | 字符 | 参数被裁剪为8位字节码并作为字符进行打印 | +| %i,%d | 数字值 | 参数作为一个十进制整数打印。如果给出了精度而且值的位数小于精度位数,前面就用0填充 | +| %u,%o,%x,%X | 数字值 | 参数作为一个无符号数字值打印,u使用十进制,o使用八进制,x或X使用十六进制,两者的区别是x约定使用abcdef,而X约定使用ABCDEF | +| %e,%E | 数字值 | 参数根据指数形式打印。例如,6.023000e23是使用代码e,6.023000E23是使用代码E。小数点后面的位数由精度字段决定,缺省值是6 | +| %f | 数字值 | 参数按照的常规浮点格式打印。精度字段决定小数点后面的位数,缺省值是6 | +| %g,%G | 数字值 | 参数以%f或%e(如G则%E)的格式打印,取决于它的值。如果指数大于等于-4但小于精度字段就使用%f格式,否则使用指数格式 | +| %s | 字符串 | 打印一个字符串 | +| %q | (无) | 打印一个字符串,并将字符串置于一对引号中,如果字符串中包含引号换行等自动添加转义符。如果要读取一个字符串传为代码。为避免用户恶意注入引号等特殊字符,可以使用%q进行格式化 | +| %% | (无) | 取消%转义打印一个%字符,即用%%表示本来的% | + +> 注: %11.9f中的9表示精确到小数点后9位,以此类推;11表示输出字符串长度为11不够在后面加空格 + +### 引用 & 主函数 & 命令行参数 + +```c +#include + +int main(int argc, char *argv[]) +{ + printf("hello world!\n"); + return 0; +} +``` + +上述例子可以看出,一段简单的C代码包含的各个部分(必须包含main函数) + +- `int argc, char *argv[]`用于取得命令行参数,针对命令行参数不同的电脑可能呈现不同的情况,有些时候第二个形参使用`TCHAR *argv[]`但是大部分时候使用的是`char *` +- 值得注意的一点是,取得的命令行参数一定是字符串,可以使用`atoi`、`atol`等函数进行一下转换 +- 在一个C语言文件中,不是一定得包含什么头文件,但是包含一些现成的头文件是有必要的,那会节省你很多敲代码的时间,但是又不是一定非得包含所有的头文件,那样会使你的程序在编译的时候时间较长 +- 头文件引用有两种形式,`#include `、`#include "test.h"`,区别在于尖角括号适用于选择要包含的文件不是当前文件夹的而是库里的,双引号用于包含同文件夹的 +- `return 0`从理论上说这个返回值是没用的,因为他是返回给系统的,但是在一些情况下可以通过捕获这个值查看程序本次运行的情况 + +### \ No newline at end of file