前言
Hello,大家好,我是小陈,学习C语言有三个月了,难免会有遗忘的知识点或者以前根本没见过的知识点,今天我就分享给大家。
C语言最基本的知识点:
1.每个C程序有且只有一个主函数main(), 且程序必须从main()函数开始执行, 但是main()函数可以放在程序中的任意位置
2.C语言的书写格式是自由的, 一行可以写多条语句, 一条语句也可以写在不同的行上
3.C语言本身不提供输入输出语句, 可以通过库函数来实现输入和输出操作
4.注释在预处理阶段会被预处理器删除掉, 编译器不需要注释
(C语言编译过程:预处理(删掉注释)->编译->汇编->链接)
5.C 语言中的语句必须以分号 “;” 结束, 所以空语句表示为 “;”, 不是空行.
6.C 语言中的关键字既不能做变量名也不能做函数名.
7.C标准规定标识符的有效长度不能超过63个字符
8.被调函数中,一个return语句只能返回一个值给调用函数
9.C语言规定,字符串从首字符开始,以第一个值为ASCⅡ码0的字符结尾,其中的非0字符数量就是字符串的长度
#include <stdio.h>
int main()
{
int a = 0;
if(a = 0)
{
a++;
a--;
}
return 0;
}
分支结构与循环结构知识点:
1.复合语句可以包含多条语句, 在其中可以定义局部变量
2.花括号对{} 不仅用来表示函数的开头和结尾, 也可以用于表示复合语句, 比如说在if语句中,条件成立要执行多条语句的时候,就需要用花括号全部括起来.
3.在C语言中continue和break都可以放在循环体中,continue代表跳过后续语句直接进入下一轮循环,而break代表跳出循环;这句话的意思是continue跳过代码后的所有执行语句。
4.根据switch括号里的内容匹配到相应的case行,然后从上往下依次执行,直到遇到break或完全执行完switch语句)
5.(default可以放任意位置)
6.(switch括号里可以是整型也可以是字符型,字符型本质还是用他的ascii编码,所以char类型在一定程度上可以归属于整形类型)
合法整型常量:
1. 八进制常量:开头必须是0,且八进制是0 - 7之间组成的数,例如,029就是错误的八进制表示方式。
2. 十六进制常量:0X开头,包含字母ABCDEF,不区分大小写,例如0x与0X一样,0Xaa与0xAA,都是正确的。
3. 实数型常量:必须有小数点,例如定义double a = 1就是错误的,必须写成double a = 1.0,另外写成a = 1,0中间是逗号,就更是错误的了。
4. e与E, 表示以10为底数的幂数,且e与E后面必须跟整数,若是小数,也是错误的,例如3.2e1.5 ,这里1.5是小数,所以错的.
实型字面值常量有两种表示方式:
小数形式和指数形式
1.小数形式:由最前面的额正负号,数字0 - 9和小数点组成,不允许有其他符号;
2.指数形式;包括指数和尾数两个不可缺少的部分,用符号E(e)分割;E(e)左边是尾数,为十进制整数或小数形式的实数,右边为指数,必须为十进制整数,表示乘以10的多少次方.
结构体问题
1. 结构体变量的首地址能够被其最宽基本类型成员的大小所整除; 备注:编译器在给结构体开辟空间时,首先找到结构体中最宽的基本数据类型,然后寻找内存地址能被该基本数据类型所整除的位置,作为结构体的首地址。将这个最宽的基本数据类型的大小作为上面介绍的对齐模数。
2. 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding); 备注 : 为结构体的一个成员开辟空间之前,编译器首先检查预开辟空间的首地址相对于结构体首地址的偏移是否是本成员的整数倍,若是,则存放本成员,反之,则在本成员和上一个成员之间填充一定的字节,以达到整数倍的要求,也就是将预开辟空间的首地址后移几个字节。
3. 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要,编译器会在最末一个成员之后加上填充字节(trailing padding).
枚举变量问题
1.枚举定义和初始化。 枚举语法定义的格式如下: enum 枚举名 { 枚举元素1, 枚举元素2, …… }; 没有指定值的枚举元素,第一个枚举成员的默认值为整型的 0。所以my为0。
2.对于已指定的值,后续枚举成员的值在前一个成员上加 1,以此类推。所以his为10。 题目已经指定:your为9,her = his + 3 = 13
指针问题
1.-const int* p:p可变,p指向的内容不可变
2.- int* const p:p不可变,p指向的内容可变
3.- const int* const p:p和p指向的内容都不可变
4…的优先级高于*, 先和p结合
编译环境的不同
系统x86与x64的区别:
1、内存寻址能力区别
32位系统寻址能力是4G容量,不过需要保留一些给硬件使用,因此留给用户的可用内存一般是3.25g - 3.5G容量左右,即使你插上8G内存,也无法识别那么大容量,而64位系统可以支持128GB大内存,甚至更大。
2、运算速度区别
安装64位系统,需要CPU必须支持64位,而64位CPU GPRs的数据宽度为64位,64位指令集可以运行64位数据指令,也就是说处理器一次可提取64位数据,比32位提高了一倍,理论上性能会相应提升一倍。
结束语:
好啦,以上就是小陈分享的知识点,谢谢大家喜欢。