C语言知识点总结
First Post:
Last Update:
Word Count:
Read Time:
Last Update:
Word Count:
999
Read Time:
4 min
这是我主持的OurEDA的例会内容整理
点击 下载 本次沙龙 PPT
变量
常用变量表(看看就好有个印象就行)
类型 | 含义 | 32位编译器中大小(一般) | 64位编译器中大小(一般) | 最小值(32位) | 最大值(32位) |
---|---|---|---|---|---|
bool | 布尔类型 | 1byte | 1byte | false | true |
char | 单个字符 | 1byte | 1byte | -2^7^ | 2^7^-1 |
short | 短整形 | 2byte | 2byte | -2^15^ | 2^15^-1 |
int | 整形 | 4byte | 4byte | -2^31^ | 2^31^-1 |
long | 长整形 | 4byte4byte | 8byte | -2^31^ | 2^31^-1 |
long long | 长整形 | 8byte | 8byte | -2^63^ | 2^63^-1 |
float | 单精度浮点数 | 4byte | 4byte | -2^127^ | 2^128^ |
double | 双精度浮点数 | 8byte | 8byte | -2^1023^ | 2^1024^ |
long double | 扩展精度浮点数 | 12byte | 16byte | -2^16383^ | 2^16384^ |
char* | 字符常量或字符串常量 | 4byte | 8byte | 无意义 | 无意义 |
类型 | 有效位数计算 | 有效位数 |
---|---|---|
float | 223+1=16,777,216 | 8-1=7 |
double | 252+1=9,007,199,254,740,992 | 16-1=15 |
long double | 280+1=2.410 24 / 2112+1=1.0381034 | 25-1=24 / 35-1=34 |
一些注意事项
- 数字默认是 double
- 字符串默认是const char*
特殊前缀
1 |
|
变量作用域
局部变量
全局变量
字符串
字符串在c语言中有两种形式char*和char[],这里简单分辨下两者之间的不同。
“HelloWorld!”是字符串常量,不可修改。
- char* c1=”HelloWorld!”中,c1指向代码段中的常量,只读不写,且常量相同,指向的地址也相同。
- char c2[]=”HelloWorld!”中,c2指向堆栈段中的数据,可读可写,相当于把代码端的数据拷贝了出来。
结构体
结构体可以看作是一种几个基础类型复合的类型。
语句
条件语句
if - else - if else
if依据后面的条件语句的结果进行判断,非0为真,0为假
if会优先和近的else组合
1
2
3
4
5
6if()
//...
else if()
//...
else
//...1
2
3
4
5
6if()
//...
if()
//...
else
//...switch - case - default
注意:每种情况下都要有break,否则将会持续执行。
1
2
3
4
5
6
7
8
9
10switch(ch){
case 'a':
//...
break;
case 'b':
//...
break;
default:
//...
}
循环语句
while
先判断,再执行
while 依据后面语句的结果进行判断,非0为真,0为假
do while(见得较少)
不判断,先执行一次
for
先判断,再执行
适用于控制执行的次数
跳转语句
break
跳出当前语句({})
continue
在 条件语句 中表示什么都不做(替代空语句);
在 迭代语句 中表示 直接进入下一轮循环,不执行完当前循环 。
goto(非常非常不建议,不过学的时候可以试着玩一下)
goto任意位置
1
2
3
4
5
6
7
8
9
10
11for (int i=0; i<n; i++) {
for (int j=0; j<m; j++) {
for (int k=0; k<o; k++) {
if (跳出条件) {
goto end;
}
}
}
}
end:
//...
函数
函数结果
返回类型 函数名(形式传入参数)
{
函数体;
return ();
}
return 在 dfs 等算法中用于回溯
内联函数 inline
提高程序执行效率(整体代换而不是用函数调用)
1
2
3
4inline char *dbtest(int a)
{
return (a % 2 > 0 ? "奇" : "偶");
}
指针
&
常量指针(不能修改指针指向地址中的值)
指针常量(不能修改指针的值)
常量指针常量(既不能修改指针指向地址中的值,又不能修改指针的值)
结构体指针变量( . / -> )
数组与指针
数组的变量名就是该数组的首地址
数组的下标就是地址的位移量
scanf 与 printf
- scanf(“输入格式”,变量地址);
- printf(“输出格式”,变量);