C语言入门学习笔记第三章:程序框架的分析

      大家好,我是小智!

      一般第一个程序都是“hello world”,下面就是利用C语言设计的程序代码实现

#include <stdio.h>
int main(void)
{
	printf(“hello world\n”);
	return 0;
}

注意:在学习编程语言的时候,一定要记得一句话:程序是写给人看的!!!

      作为一段有意义的程序来说,一定要在程序中对关键的位置进行注释,这样可以方便大家理解程序,尤其是在实际的项目开发过程中是团队开发同一个项目,由于每个人的编程习惯以及逻辑思维都不同,所以就会导致程序没有办法进行整合,所以大家必须养成一个良好的编程习惯。

代码风格

      编写程序时应该如何养成良好的编程习惯?可以参考linux内核提供的编码规范。

image

image

      可以看到,linux内核的设计者linus本人对于linux内核代码的编写风格有一定的标准,所以在使用linux系统进行开发时也应该遵守该代码风格,当然并不是强制要求。


代码注释

image

      可以看到,程序中可以包含一些必要的注释,但是不要过度注释,一般在程序中进行注释时有两种情况:针对某一行代码进行注释 and 针对某一段代码进行注释 具体操作如下所示

针对某一行代码进行注释

      当程序中需要对某一行代码进行注释时,可以采用 //或者 /* */ 这两种方案进行注释,如:

#include  <stdio.h>
int main(void)
{
		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;
}
/*
*
*
*/
#include  <stdio.h>
int main(void)  
{
		printf(“hello world\n”);
		return 0;
}

注意:程序中的注释只是对于工程师阅读源码起到辅助性作用,对程序进行编译时,编译器会自动忽略注释,只编译有效代码,就是说编译器并不会把注释翻译成二进制指令。


程序入口

      C语言是一门面向过程的编程语言,面向过程其实是一种解决问题的思想,这个过程指的是用户在解决某个问题时,按照某种逻辑关系把这个问题拆分为很多小问题,把每个小问题按照顺序单独解决,最终整个问题也就得到解决,可以理解为“大事化小,小事化了”的原则。

      面向过程思想采用的是自顶向下的设计原则,所以对于程序而言,过程的开始和结束就非常重要,在C语言标准中,就规定了C语言程序是顺序执行的,并且程序的开始必须是main函数,如下:

image

注意:C语言程序的基本单位是函数,也就是说一个程序是由一个主函数以及若干个子函数组成的,主函数的名字是固定的,叫做main函数,用户不能修改,main这个单词翻译成中文具有主要的,最重要的意思,所以main函数才会作为程序的入口,也就是说程序是按照main函数中语句的先后顺序执行的。

提示:一个程序的执行顺序和main函数所在的位置无关,哪怕是main函数写在文件最后,程序也是从main函数开始运行。


程序结束

      另外可以看到标准中规定main函数需要具有一个int型的返回值,int指的是整型数,其实是英文单词integer的缩写,也是C语言中的关键字之一,也是常用的基本数据类型之一。

int main()
{
		return 0;
}

image

      返回值指的是函数执行完成后的结果,当然,并不是所有的函数都具有返回值,这个要根据实际情况而定(别爱我,没结果)。

思考

  • 函数的结果应该如何返回?既然main函数的返回值是整型数,那到底返回哪个整数?

image


函数调用

      刚才提到C语言程序的基本单位是函数,程序是由一个主函数以及若干个子函数组成的,对于主函数而言,名称是固定的不能修改,功能就是作为程序的入口,但是对于子函数而言则不同。

      子函数指的是了程序中除了主函数之外的其他函数,子函数的类型一般有两种:一种是库函数,另一种是用户自定义函数。

      库其实就是函数的集合,由官方(ISO、ANSI、GNU)发布的函数库也被称为标准库(Standard Library),当然库的发布者也可以是组织、公司或者个人,不过这些函数库有的是开源免费的(做人无私奉献),有的是商业收费的(知识就是金钱),所以这些库也被称为第三方库。

思考1

  • 一个函数库中有很多函数,那用户如何知道这个库中都有哪些函数以及如何调用呢?

      回答:用户如果调用库函数,则必须在源文件(xxx.c)中包含库的索引,就是头文件(xxx.h),
header file指的是头文件,可以理解为是一个饭馆的菜单,在编写的时候需要包含函数对应的头文件,目的是让编译器可以去对应的函数库中找到该函数。


注意:头文件不是必须包含,只有调用了函数库中的函数接口,才需要包含头文件!!!!

思考2

  • 官方和第三方都可以发布函数库,甚至用户本人也可以开发一套函数库,请思考编译器如何区分用户使用的是第三方库的头文件还是标准库的头文件?

image

      一般官方提供的函数库都已经在系统路径中能够是存在的,所以用户需要使用<>包含头文件,就可以让编译器找到对应的函数接口。

      < xxx.h > :编译器只去系统指定路径中查找该头文件,如果未找到,则编译器进行错误提示。

      “ xxx.h ” :先去当前路径中查找头文件,未找到再去系统路径中查找,还未找到则报错提示。

掌握函数四部曲

image

posted @ 2025-06-16 01:48  努力赚钱的小智  阅读(59)  评论(0)    收藏  举报