学ios需要了解的C语言基础知识-5-函数

  函数:完成特定功能的代码段

  作用:把功能封装到函数中,方便代码管理,和以后使用

  好处:提高代码复用性、提高代码的可读性

  1、确定函数功能,根据函数功能为函数起一个有意义的名字

  2、确定完成这个功能需要函数调用者传入什么的数据,确定形参列表

  3、确定完成这个功能需要返回什么样类型的数据给函数调用者

  4、写函数体,完成函数功能

 

  定义函数的格式          形参列表

  返回值类型函数名称(形参类型形参名称,...)--- 函数头

  {

    语句;

    ...

  }

 

  形式参数:定义函数的时候,函数名称后面小括号中的参数,简称形参

  实际参数:调用函数的时候,函数名称后面小括号中的参数,简称实参

 

  1、形参与实参必须一一对应

  2、形参的类型必须与实参的类型一致

  3、基本数据类型作为函数参数传递是值传递(仅仅实参的值传递给形参,改变形参的值不会影响实参的值)

  4、形参名称不可重名

  5、形参名称也不可与函数中直接定义的变量重名

 

  函数返回值

  1、return作用

     1、返回数据给函数调用者

     2、结束函数

     注意点:1、什么样返回值类型就必须返回什么样类型的值

            2、如果函数没有返回值,函数的返回值类型是void,那么他可以不写return语句,如果你需要提前结束函数,可以写return后面直接加;

            3、函数只能有一个返回值

            4、没有明确指定返回值类型,默认是int (但是开发过程中都必须写返回值类型)

 

  所有的数据类型都可以作为函数参数类型

  所有的数据类型都可以作为函数的返回值类型

 

  终端: pwd, ls, ls -l,cd ,touch,open,mkdir,rm,rmdir,rm -r,clear,who

  编译器指令:cc -c 编译  cc  链接(编译和链接)

 

  预处理指令:在编译前进行解析处理指令

  #include 将包含文件拷贝#include所在的位置

  #include " "

  1、现在当前的路径下查找

  2、如果没找到就去编译器的include路径下查找

  3、如果还没有找到就系统include路径下查找

  #include <>

 2、先去编译器的include路径下查找

 3、如果还没有找到就系统include路径下查找

 

  当包含本项目中文件的时候就是 #include " "

  当包含系统文件的时候,就是用 #include < >

  #import

 

  函数声明:把函数头拷贝过来,加上一个分号

  作用:告诉编译器我这个函数已经存在了

  

  如果我们是用在后面定义的函数时候,如果没函数声明会报一个警告(有的错误)

  如果函数只有声明没有定义的话,编译可以成功,但链接出错了

 

  多文件开发

  .h  函数声明

  .m  函数定义

  .h 与 .m  必须同名

  如果我们想是用某个文件中函数,只需要包含它头文件

 

 

  递归函数:自己调用自己的函数

  1、找规律: fun(n) 与fun(n- 1) 或 fun(n + 1) 的关系

  2、确定函数的结束条件

### OmegaConf 配置管理简介 OmegaConf 是一个强大的 Python 库,用于处理复杂的配置文件。它支持多种数据结构(如字典、列表)以及 YAML 文件的解析和操作。以下是有关如何使用 OmegaConf 的详细介绍。 #### 创建配置对象 可以通过 `OmegaConf.create` 方法创建一个新的配置对象。该方法可以接受字典、YAML 字符串或其他兼容的数据结构作为输入[^1]。 ```python import omegaconf from omegaconf import OmegaConf config_dict = {"database": {"host": "localhost", "port": 6379}} config = OmegaConf.create(config_dict) print(OmegaConf.to_yaml(config)) # 将配置转换为 YAML 格式的字符串 ``` #### 加载外部 YAML 文件 如果需要加载外部 YAML 文件,可使用 `OmegaConf.load` 方法。这使得程序能够轻松读取并应用存储在磁盘上的配置文件。 ```python yaml_file_path = "./example_config.yaml" file_conf = OmegaConf.load(yaml_file_path) # 打印加载后的配置内容 print(file_conf.database.host) # 输出 'localhost' ``` #### 合并多个配置源 当存在多个配置来源时(如默认设置与命令行参数),可以使用 `OmegaConf.merge` 来无缝合并它们。此功能允许开发者优先级较高的配置覆盖较低级别的配置项。 ```python default_configs = OmegaConf.create({"model": {"type": "resnet50"}}) cli_args = OmegaConf.from_dotlist(["model.type=vgg16"]) merged_config = OmegaConf.merge(default_configs, cli_args) assert merged_config.model.type == "vgg16" # 命令行参数成功覆盖默认值 ``` #### 动态更新配置 除了静态定义外,还可以通过访问器动态修改现有配置中的字段。这种灵活性非常适合运行时调整某些超参数或环境变量。 ```python dynamic_update = file_conf.copy() dynamic_update.database.port = 8080 print(dynamic_update.database.port) # 输出新的端口号 8080 ``` #### 错误处理机制 为了防止非法赋值破坏整个系统的稳定性,OmegaConf 提供了严格的模式控制选项。启用严格模式后,任何未声明过的键都将引发异常提示用户修正错误。 ```python strict_mode_enabled = file_conf.copy() strict_mode_enabled.set_struct(True) # 开启只读保护状态 try: strict_mode_enabled.new_field = True # 此处会抛出 AttributeError 异常 except AttributeError as e: print(f"Catch expected error: {e}") ``` --- ### 总结 以上展示了 OmegaConf 在不同场景下的典型用法,包括但不限于初始化配置实、加载外部资源、融合多层设定逻辑以及实施安全防护措施等方面的功能特性。希望这些子能帮助快速掌握其核心概念和技术要点!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值