学嵌入式C语言,看这一篇就够了(2)
基本概念https://img2024.cnblogs.com/blog/3602479/202502/3602479-20250217155340004-125202900.png
程序框架分析
搭建一个主体框架,包含头文件、程序入口、输出函数、程序竣事
https://img2024.cnblogs.com/blog/3602479/202502/3602479-20250217175559454-749830274.png
#include<stdio.h>
int main(void)
{
//输出字符串hello world并且进行换行
printf(“hello world\n”);
return 0;
}
[*]留意:在学习编程语言时要牢记:程序是写给人看的!!!
[*]一段有意义的程序一定要在程序中对关键的位置进行注释,这样可以方便理解程序,尤其是在实际的项目开辟过程中是团队开辟同一个项目,由于每个人的编程习惯以及逻辑头脑都不同,所以就会导致程序没有办法进行整合,所以必须养成一个良好的编程习惯
编写代码的风格
[*]参考linux内核提供的编码规范
https://img2024.cnblogs.com/blog/3602479/202502/3602479-20250217163931290-1971504728.png
https://img2024.cnblogs.com/blog/3602479/202502/3602479-20250217163938467-212104172.png
[*]可以看到,linux内核的设计者linus本人对于linux内核代码的编写风格有一定的标准,所以大家在使用linux体系进行开辟时也应该遵守该代码风格,固然并不是强制要求
[*]借助AI工具相识一下Linus有哪些规定
https://img2024.cnblogs.com/blog/3602479/202502/3602479-20250217164520573-1690194061.png
代码注释
https://img2024.cnblogs.com/blog/3602479/202502/3602479-20250217164902128-1085259734.png
可以看到,程序中可以包含一些必要的注释,但是不要过分注释,一样平常在程序中进行注释时有两种情况:针对某一行代码进行注释以及针对某一段代码进行注释 具体操作如下所示:
[*]针对某一行代码进行注释
当程序中必要对某一行代码进行注释时,可以采用 // 或者 /* */ 这两种方案进行注释,如:
#include<stdio.h>
int main(void)
{
//输出字符串hello world并且进行换行
printf(“hello world\n”);
return 0;
}
[*]针对某一段代码进行注释
当程序必要对某一段代码进行注释时,可以采用 /**/ 这种方案,一样平常针对函数或者程序
/***************************************************
*
*
*
***************************************************/
#include<stdio.h>
int main(void)
{
printf(“hello world\n”);
return 0;
}
/*
*
*
*/
#include<stdio.h>
int main(void)
{
printf(“hello world\n”);
return 0;
}
[*]留意:程序中的注释只是对于工程师阅读源码起到辅助性作用,对程序进行编译时,编译器会自动忽略注释,只编译有效代码,就是说编译器并不会把注释翻译成二进制指令。
程序入口
C语言是一门面向过程的编程语言,面向过程其实是一种办理题目的思想,这个过程指的是用户在办理某个题目时,按照某种逻辑关系把这个题目拆分为很多小题目,把每个小题目按照顺序单独办理,最终整个题目也就得到办理,可以理解为“大事化小,小事化了”的原则。
面向过程思想采用的是 自顶向下 的设计原则,所以对于程序而言,过程的开始和竣事就非常重要,在C语言标准中,就规定了C语言程序是 顺序执行 的,并且程序的开始必须是main函数,如下:
https://img2024.cnblogs.com/blog/3602479/202502/3602479-20250217171430454-133362920.png
[*]int main(void)
[*]int main(int argc, char *argv[])
[*]可以看到,在程序启动时会调用一个叫做main的函数,并且标准中规定了main函数的原型如下所示:
https://img2024.cnblogs.com/blog/3602479/202502/3602479-20250217171535019-1967017036.png
[*]留意:C语言程序的基本单位是函数,也就是说一个程序是由一个主函数以及若干个子函数组成的,主函数的名字是固定的,叫做main函数,用户不能修改,main这个单词翻译成中文具有重要的,最重要的意思,所以main函数才会作为程序的入口,也就是说程序是按照main函数中语句的先后顺序执行的。
[*]提示:一个程序的执行顺序和main函数所在的位置无关,哪怕是main函数写在文件最后,程序也是从main函数开始运行。
C语言下令行参数
[*]int main(int argc,char *argv[]);argc是指传入参数的个数,argc的值应该是非负整数;argv是一个指针数组,指向传递给程序的每个参数
[*]argv存储程序的名字 ./a.out;argv指向的一个下令行参数的指针,argv指向最后一个下令行参数的指针
[*]argc 为1 --> 没有提供任何参数;argc 为2 --> 传递了一个参数
[*]多个下令行参数之间用 空格分隔;假如参数本身带有空格,那么传递参数时应把参数放置在" "或者' '中
程序竣事
别的可以看到标准中规定main函数必要具有一个int型的返回值,int指的是整型数,其实是英文单词integer的缩写,也是C语言中的关键字之一,也是常用的基本数据范例之一
int main()
{
return 0;
}https://img2024.cnblogs.com/blog/3602479/202502/3602479-20250217174352602-1534688327.png
返回值指的是函数执行完成后的效果,固然,并不是全部的函数都具有返回值,这个要根据实际情况而定
效果如何返回?返回哪个整数?
https://img2024.cnblogs.com/blog/3602479/202502/3602479-20250217174538783-1615191271.png
函数调用
刚才提到C语言程序的基本单位是函数,程序是由一个主函数以及若干个子函数组成的,对于主函数而言,名称是固定的不能修改,功能就是作为程序的入口,但是对于子函数而言则不同
子函数指的是了程序中除了主函数之外的其他函数,子函数的范例一样平常有两种:一种是库函数,另一种是用户自定义函数
库其实就是函数的聚集,由官方(ISO、ANSI、GNU)发布的函数库也被称为标准库(Standard Library),固然库的发布者也可以是构造、公司或者个人,不过这些函数库有的是开源免费的(做人无私奉献),有的是商业收费的(知识就是金钱),所以这些库也被称为第三方库
函数库有很多函数,如何知道库中都有哪些函数?如何调用呢?
用户假如调用库函数,则必须在源文件(xxx.c)中包含库的索引,就是头文件(xxx.h),header file指的是头文件,可以理解为是一个饭馆的菜单,在编写的时候必要包含函数对应的头文件,目的是让编译器可以去对应的函数库中找到该函数
https://img2024.cnblogs.com/blog/3602479/202502/3602479-20250217175145872-1864050685.png
[*]留意:头文件不是必须包含,只有调用了函数库中的函数接口,才必要包含头文件!!!!
一样平常官方提供的函数库都已经在体系路径中能够是存在的,所以用户必要使用包含头文件,就可以让编译器找到对应的函数接口
C语言头文件
[*]编译器如何区分第三方库头文件和标准库头文件?
https://img2024.cnblogs.com/blog/3602479/202502/3602479-20250217175309479-1434619584.png
定义
头文件是拓展名为.h的文件,包含了C函数声明和宏定义,被多个源文件引用共享
引用头文件
[*]< xxx.h > :编译器只去体系指定路径中查找该头文件,假如未找到,则编译器进行错误提示。
[*]“ xxx.h ” :先去当前路径中查找头文件,未找到再去体系路径中查找,还未找到则报错提示。
引用头文件的操作
[*]只引用一次头文件
[*]用什么引用什么
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]