源文件
- 文件后缀:
.c
- c语言程序构成:变量 + 函数
- C语言程序入口:main函数
- 包含文件: 将指定的文件内容插入. 例子:
#include "mylib.h"
- 文本替换:
#define 名字 替换文本
- 注释: 单行注释用
//
,跨行注释用/* 注释内容 */
数据类型
- 基本数据类型
- char:ascii字符
- int,long,short,signed,unsigned
- float,double
_Complex
,_Imaginary
:复数和虚数_Bool
:布尔类型
- 衍生数据类型
- 数组,结构,联合
- 指向数据类型的指针
- 返回数据类型值的函数
数据类型:char(ascii单字符)
- char: 取值范围可能为-128-127或0-255, 不能保证涵盖EOF对应的-1, 所以char变量应该声明为int
- char放在单引号内,也可以用整数直接表示
- 长度为1字节(byte,8位)的ASCII值,Linux下查看命令 man ascii
- 128个字符中,0至31,127 为控制字符,其他为非控制字符
\X
表示C语言中的转义字符:仅仅是为了便于人类识别
ASCII值与转义字符
Oct Dec Hex Char Oct Dec Hex Char
────────────────────────────────────────────────────────────────────────
000 0 00 NUL '\0' (null character) 100 64 40 @
001 1 01 SOH (start of heading) 101 65 41 A
002 2 02 STX (start of text) 102 66 42 B
003 3 03 ETX (end of text) 103 67 43 C
004 4 04 EOT (end of transmission) 104 68 44 D
005 5 05 ENQ (enquiry) 105 69 45 E
006 6 06 ACK (acknowledge) 106 70 46 F
007 7 07 BEL '\a' (bell) 107 71 47 G
010 8 08 BS '\b' (backspace) 110 72 48 H
011 9 09 HT '\t' (horizontal tab) 111 73 49 I
012 10 0A LF '\n' (new line) 112 74 4A J
013 11 0B VT '\v' (vertical tab) 113 75 4B K
014 12 0C FF '\f' (form feed) 114 76 4C L
015 13 0D CR '\r' (carriage ret) 115 77 4D M
016 14 0E SO (shift out) 116 78 4E N
017 15 0F SI (shift in) 117 79 4F O
020 16 10 DLE (data link escape) 120 80 50 P
021 17 11 DC1 (device control 1) 121 81 51 Q
022 18 12 DC2 (device control 2) 122 82 52 R
023 19 13 DC3 (device control 3) 123 83 53 S
024 20 14 DC4 (device control 4) 124 84 54 T
025 21 15 NAK (negative ack.) 125 85 55 U
026 22 16 SYN (synchronous idle) 126 86 56 V
027 23 17 ETB (end of trans. blk) 127 87 57 W
030 24 18 CAN (cancel) 130 88 58 X
031 25 19 EM (end of medium) 131 89 59 Y
032 26 1A SUB (substitute) 132 90 5A Z
033 27 1B ESC (escape) 133 91 5B [
034 28 1C FS (file separator) 134 92 5C \ '\\'
035 29 1D GS (group separator) 135 93 5D ]
036 30 1E RS (record separator) 136 94 5E ^
037 31 1F US (unit separator) 137 95 5F _
040 32 20 SPACE 140
041 33 21 ! 141 97 61 a
042 34 22 " 142 98 62 b
043 35 23 # 143 99 63 c
044 36 24 $ 144 100 64 d
045 37 25 % 145 101 65 e
046 38 26 & 146 102 66 f
047 39 27 ' 147 103 67 g
050 40 28 ( 150 104 68 h
051 41 29 ) 151 105 69 i
052 42 2A * 152 106 6A j
053 43 2B + 153 107 6B k
054 44 2C , 154 108 6C l
055 45 2D - 155 109 6D m
056 46 2E . 156 110 6E n
057 47 2F / 157 111 6F o
060 48 30 0 160 112 70 p
061 49 31 1 161 113 71 q
062 50 32 2 162 114 72 r
063 51 33 3 163 115 73 s
064 52 34 4 164 116 74 t
065 53 35 5 165 117 75 u
066 54 36 6 166 118 76 v
067 55 37 7 167 119 77 w
070 56 38 8 170 120 78 x
071 57 39 9 171 121 79 y
072 58 3A : 172 122 7A z
073 59 3B ; 173 123 7B {
074 60 3C < 174 124 7C |
075 61 3D = 175 125 7D }
076 62 3E > 176 126 7E ~
077 63 3F ? 177 127 7F DEL
命令行输出函数:printf
printf("Hello World");
命令行用户输入函数:scanf()
scanf("format specifier",variable_name);
字符流输入输出函数: getchar(),putchar()
- getchar每次只读取一个字符,执行过程: 输入设备->内存缓冲区->getchar函数
- 输入换行符时,getchar开始从内存缓冲区依次读取每个字符,包括换行符
\n
- getchar原型:int getchar(void), 保存getchar值的变量需要声明为int类型防止出错
- 如果输入缓冲区非空,getchar会读入垃圾字符
整数
- 整数除法舍位:直接舍弃小数部分,不会四舍五入
#include <stdio.h>
int main() {
int c = 4 / 5;
printf("%d\n", c);//0
}
数据结构:字符串
- 双引号内的字符序列:字符串常量
DATA TYPES:
Name! ! Size Description
char! ! 1 byte an ASCII value: e.g. ‘a’ (see: man ascii)
int/long 4 bytes a signed integer: e.g. 97 or hex 0x61, oct 0x141
long long 8 bytes a longer multi-byte signed integer
float! ! 4 bytes a floating-point (possibly fractional) value
double!! 8 bytes a double length float
char, int, and double are most frequently and easily used in small programs
sizeof(double) computes the size of a double in addressable units (bytes)
Zero values represent logical false, nonzero values are logical true.
Math library (#include <math.h>, compile with -lm) prefers double.
样板代码
#include <stdio.h>
int main(){
return 0;
}
关键字
- 程序结构
- 条件:if,else
- 循环:for,while,do,continue,break
- 开关:switch,case,default
- 跳转:goto
- 未分类
- void: 声明函数无返回值或无参数,声明无类型指针,表示
无
- auto 声明自动变量
- struct 声明结构体变量或函数
- union 声明共用数据类型
- enum 声明枚举类型
- typedef 用以给数据类型取别名
- const 声明只读变量
- extern 声明变量是在其他文件正声明
- register 声明寄存器变量
- static 声明静态变量
- volatile 说明变量在程序执行中可被隐含地改变
- sizeof 计算数据类型长度
- return 子程序返回语句(可以带参数,也可不带参数)循环条件
- void: 声明函数无返回值或无参数,声明无类型指针,表示
书籍&
参考
正文完