4.1 自定义函数和结构体

注意本随笔以及以后相关的随笔都是算法竞赛入门经典的笔记,因此会有部分内容直接从原文摘入,如有不合理的地方,请联系FlnButFly,我会马上删除
1.C语言中的数学函数可以定义成“返回类型 函数名(参数列表){函数体}”,其中函数体的最后一条语句应该是“return 表达式;”
eg:
int add(int a, int b)
{
return a + b;
}
如果自己定义的函数没有返回值,那么返回类型需要填为void,并且可以不需要使用ruturn语句,除非希望在某些地方退出函数
2.函数的参数和返回值最好是“一等公民”,如int或者double,也可以是char,其他的非一等公民作为参数和返回值要复杂一些,这里的return是一个动作,不是描述m3.如果在函数的运行过程中碰到了return语句,将直接退出这个函数,不去执行后面的语句,如果在执行的过程中始终没有return语句,则会返回一不确定的值,也就是说无论你有没有写下return语句,系统都会强制性返回相应数据类型的值,只不过我们如果没有写return的话,可能会使系统误判程序是否正常退出,-Wall可以捕捉到这一可疑情况并产生警告。
4.main函数是整个程序的入口,main函数的返回值0代表正常结束,其他的代表有些异常的退出了,注意在算法竞赛中,总是让main函数返回0
5.在自定义函数中,不要求函数一步得到结果,其中的代码规则等同于在main函数中写的一样
6.hypot函数实在math.h头文件中,同时该数学函数等价于sqrt(aa + bb);
7.
double f(int x1, int y1, int x2, int y2)
{
int d1 = x1 - x2;
int d2 = y1 - y2;
return hypot(d1, d2);
}
上述例子说明了一个函数里面可以调用其他函数,也就是自定义函数其实可以类比于一个新的main函数,在自定义函数中写代码和在main函数中写代码并没有什么区别
8.在C语言中,定义结构体的方法为"struct 结构体名称{域定义};",注意花括号后面还有一个分号,注意和自定义函数结构的区分
9.注意如果是通过struct定义出来的结构体定义相应数据类型的变量的时候一定要struct 结构体名称 变量名才可以使用,如果缺少了struct,好像在c++中编译并不会报错,可能在c语言中使用会报错发,对于c来说struct 结构体名称才是一个新的数据类型,所以在c语言中我们经常使用typedef struct来定义结构体,但是由于C++中struct也拥有了使用typestruct的便捷,所以也比较少用
10.为了使用方便,往往用typedef struct{域定义;}类型名;的方式定义一个新类型名,笔者试过在c++中编译typedef如果类型名在struct后面仍然能够通过编译,但是会报错,说typedef在申明中被忽视了,而按照上述的语法规则才能正常编译,当然使用了typedef struct就可以直接定义结构体变量而不用在前面再加上struct了

posted @   banyanrong  阅读(385)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示