背景:面试jg单位需要懂一些嵌入式的内容,嵌入式大多是C/C++,所以学了一些C的内容
C语言规范
C自上而下编译,所以需要先定义函数,再声明调用
1.主函数被自动调用
2.返回值给调用的程序
3.主函数必须有返回值,且是int
4.标识符包括:变量,函数名,函数参数,其它实体,必须先声明后使用。区分大小写
C语言类型
char, short, int, long, long long
float至少6位有效数字, double
char长度不随处理器改变而变化,其它会变
修饰数据类型:signed, unsigned, long,可以修饰int
unsigned, signed修饰char
long 修饰 double
register存储类型说明符,只能用于局部变量和函数形参,存储到寄存器中。不能进行编址(不能&),只能定义1-2个,因为寄存器个数限制及没有地址
auto存储类型说明符,
sizeof()编译时求值,返回操作数对应的数据类型的字节数。
逻辑运算符:&&,||, !
位运算符:&, |, ^, ~, >>, <<只对char或int型数据
跳转:return, break, continue, goto
A的ascii是65, a是97, 0是48, 空格是20
C源文件运行过程
编辑,编译,链接,执行
编辑:程序代码录入,生成源程序.c,程序设计语言。可能会有语法错误。
编译:语法分析查错,翻译生成个目标程序需.obj,机器语言。可能有语义错误
链接:与其它目标程序或库链接装配,生成可执行程序.exe,机器语言
执行:
ARM 推荐参数不超过4个,可以直接用寄存器传值,超过4个要用堆栈进行传值
推荐先再.h头文件中声明变量,在.c源文件中做实现,可以实现方法实现的隐藏
putchar()的作用是向终端输出一个字符
getchar()是只能接收一个字符
int a[][] 不能做形参,因为a是指向int[]的数组指针,下标大小不确定,需要指定一维数组的大小,所以int[][8]可以,并且可以直接用二维数组名做其实参。