当前位置 博文首页 > 不负时光可怜人:【C语言程序设计】C语言知识点汇总1——变量、
这一章无重点内容。
第一部分是:ASCII非打印控制字符;
第二部分是:ASCII打印字符;
第三部分是:扩展ASCII打印字符
ASCII表上的数字0–31分配给了控制字符,用于控制像打印机等一些外围设备。例如,12代表换页/新页功能。此命令指示打印机跳到下一页的开头。(参详ASCII码表中0-31)
记忆:48-0;65-A;97-a;先大写后小写
ASCII值 | 控制字符 | ASCII值 | 打印字符 | ASCII值 | 打印字符 | ASCII值 | 打印字符 |
---|---|---|---|---|---|---|---|
0 | NUT | 32 | (space) | 64 | @ | 96 | 、 |
1 | SOH | 33 | ! | 65 | A | 97 | a |
2 | STX | 34 | " | 66 | B | 98 | b |
3 | ETX | 35 | # | 67 | C | 99 | c |
4 | EOT | 36 | $ | 68 | D | 100 | d |
5 | ENQ | 37 | % | 69 | E | 101 | e |
6 | ACK | 38 | & | 70 | F | 102 | f |
7 | BEL | 39 | , | 71 | G | 103 | g |
8 | BS | 40 | ( | 72 | H | 104 | h |
9 | HT | 41 | ) | 73 | I | 105 | i |
10 | LF | 42 | * | 74 | J | 106 | j |
11 | VT | 43 | + | 75 | K | 107 | k |
12 | FF | 44 | , | 76 | L | 108 | l |
13 | CR | 45 | - | 77 | M | 109 | m |
14 | SO | 46 | . | 78 | N | 110 | n |
15 | SI | 47 | / | 79 | O | 111 | o |
16 | DLE | 48 | 0 | 80 | P | 112 | p |
17 | DCI | 49 | 1 | 81 | Q | 113 | q |
18 | DC2 | 50 | 2 | 82 | R | 114 | r |
19 | DC3 | 51 | 3 | 83 | S | 115 | s |
20 | DC4 | 52 | 4 | 84 | T | 116 | t |
21 | NAK | 53 | 5 | 85 | U | 117 | u |
22 | SYN | 54 | 6 | 86 | V | 118 | v |
23 | TB | 55 | 7 | 87 | W | 119 | w |
24 | CAN | 56 | 8 | 88 | X | 120 | x |
25 | EM | 57 | 9 | 89 | Y | 121 | y |
26 | SUB | 58 | : | 90 | Z | 122 | z |
27 | ESC | 59 | ; | 91 | [ | 123 | { |
28 | FS | 60 | < | 92 | / | 124 | | |
29 | GS | 61 | = | 93 | ] | 125 | } |
30 | RS | 62 | > | 94 | ^ | 126 | ` |
31 | US | 63 | ? | 95 | _ | 127 | DEL |
特殊字符解释
NUL空 | VT 垂直制表 | SYN 空转同步 |
---|---|---|
STX 正文开始 | CR 回车 | CAN 作废 |
ETX 正文结束 | SO 移位输出 | EM 纸尽 |
EOY 传输结束 | SI 移位输入 | SUB 换置 |
ENQ 询问字符 | DLE 空格 | ESC 换码 |
ACK 承认 | DC1 设备控制1 | FS 文字分隔符 |
BEL 报警 | DC2 设备控制2 | GS 组分隔符 |
BS 退一格 | DC3 设备控制3 | RS 记录分隔符 |
HT 横向列表 | DC4 设备控制4 | US 单元分隔符 |
LF 换行 | NAK 否定 | DEL 删除 |
标识符:用来标识常量、变量、函数等字符序列;
组成:
关键字:C语言中已经被预先定义并使用的标识符,总共有32个(下文罗列关键字带注释为不理解的部分,需要另外花时间)
数据类型关键字:
类型修饰符
复杂类型关键字
存储级别关键字
A跳转结构
B分支结构
C循环结构
特殊的标识符:他们没被列入关键字,却也有特定的含义。
如:define、include、under、if
new的用法:
使用new运算符时必须已知数据类型,new运算符会向系统堆区申请足够的存储空间,如果申请成功,就返回该内存块的首地址,如果申请不成功,则返回零值。
一般使用格式:
格式1:指针变量名=new 类型标识符;
格式2:指针变量名=new 类型标识符(初始值);
格式3:指针变量名=new 类型标识符 [内存单元个数];
int *a=new int;
int *a = new int(5); 作用同上,但是同时将整数空间赋值为5
int *a=new int [5];
这类题易错重点关注
表示方式:
十进制表示形式:
(*)指数表示形式(e或E之前必须有数字,且指数必须为整数:指数是e后面的哦!)
区别
//字符串数组,只能在定义的时候,通过=赋初值,如果先定义,在赋值就不可以
{
1. 定义的时候直接用字符串赋值
char a[10]="hello";
//注意:不能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的。
2. 对数组中字符逐个赋值
char a[10]={'h','e','l','l','o'};
//字符串可以赋值给字符指针变量,或者将字符串用字符数组保存。
3. 先定义,后利用strcpy赋值
char a[10];
strcpy(a, "hello");
//strcpy是一种C语言的标准库函数,strcpy把含有'\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*。
//函数实现还是通过数组一个个操作赋值。
}
//单字符赋值,可通过数组下标方式或指针方式,引用数组元素,进行
{
char a[10];
char ch='a';
for(i=0;i<10;i++)
a[i]=ch+i ; //可通过数组下标引用数组元素,完成赋值
char *p;
for(p=a; p<a+10; p++)
*p=ch++; //通过指针对数组相应元素赋值
}
在不同及其中所占空间可能有不同,但大小关系(char1<int2<=short2<=long4<=float4<double8)
int a=15,x;
x=a<<2;//求x
a:00001111
a<<2:
00111100
char a=-4,b=4,x,y;
x=a>>2;
y=b>>2;
a:11111100(负数的补码形式不要忘)
a>>2:11111111,十进制为-1;
自动转换:将复制运算符的右边数据转换为左边变量的数据类型,然后赋值
许多小细节,令人抓狂
d格式符:用来输出十进制(decimal)
int y=-3456;
printf("%8d\n",y);//1
printf("%+8d\n",y);//2
printf("%08d\n",y);
printf("y=%-8d",y);
printf("y=%-08d\n",y);
//output
-3456
-3456
-0003456
y=-3456 y=-3456
//在devc++中跑完之后发现,这里添加1,2两句效果相同;期初我认为+是不是不起作用了,将y的数值改为正数可发现1式无+,2式有+
//最后两句都有4个空格
/*动态域宽设置*/
int i=1;
printf("##%*d\n",i,i);
i++;
printf("##%*d\n",i,i);
i++;
printf("##%*d",i,i);
//output
##1
## 2
## 3
/*注意这里的*不是指空格的数量,如其名动态域宽设置,设置的为其域宽,当i等于1时其宽度为1*/
o格式符:以八进制(octal)形式输出整数
x格式符:以十六进制(hexadecimal)形式输出整数
u格式符:以无符号(unsigned)十进制数输出
注:以上长整型,同样加’l’
//十六进制同理
int y=123;
printf("y=%8o\n",y);
printf("%#8o",y);
short y=-1;
printf("unsigned=%u",y);
//output
unsigned=4294967295;
//不难发现,负数在计算机内以补码形式存储,所以输出成无符号位的数字,需要把原先二进制转化为10进制
/*3.42 turb C 标准,16位微机中int=short=2byte */
int x,y,z;
long m;
y=(x=32767,x-1);//逗号运算符从左往右
z=m=0xffff;
//output
y=32766;
z=-1;
m=65535;
//int两个字节,16——>二进制(11111111),计算机中有符号表示为-1,如果int输出为%u,同样是65535;
f格式符
mf:
m.nf
同样可以在前面添加**+,-,0**
注意点:
printf("%f",1.12345678);
//实际输出为1.123457,因为保留6位有效数字,所以第七位要四舍五入到第六位。
printf("%.18f\n",1.12345678901234567890);
//下方实数末尾的f表示单精度浮点数,只存储7位有效数字
printf("%.18f\n",1.12345678901234567890f);
g格式符:(自动选择)
? 采用g格式符输出数据时
double a=1000000000;
double b=123.456;
printf("%e\n",a);
printf("%f\n"