函数的形参与返回

函数中形参与实参的传递实质:

函数在调用时,会把实参变量的值复制给形参变量,即实参与形参是两个不同的变量。形参的变量在函数返回后释放内存


①改变形参指针的值:

实参和形参的值都为内存地址,指向同一个内存空间,当形参改变后,即形参指向的内存地址改变后,并不会影响到实参。




②改变形参指针指向的内存:

实参和形参的值都为内存地址,指向同一个内存空间,当形参直接改变对应的内存空间后,即形参指向的内存地址对应的内存存放的内容改变后,同时影响到实参指向的内存地址存放的内容。


③即指针的引用 (class *&var)

实参和形参实际上是同一个变量,指向同一个内存空间




函数的返回实质就是,把返回的值复制一个副本而已。

字符串常量和字符数组的区别 字符串常量放在字符串文字量存储区,而字符数组是每一个字符都转换为ascii码。一般的来说,函数是可以返回局部变量的,函数一般的操作是把局部变量复制后返回给调用者,不能返回局部变量的是指针,因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错,具体还需要看指针指向的内容存放在哪个存储区

char *p="hello world!"; 没问题,返回的是字符串常量("hello world!")的地址,指针指向的内容(存放在静态区)在函数结束后还能正常访问。 

char p[]="hello world!"; 有问题,返回的是局部变量(数组p)的地址,指针指向的内容(数组p)存放在栈中函数结束后释放内存

static char p[]="hello world!";没问题,返回的是静态局部变量(数组p)的地址,指针指向的内容(数组p)数组存放在静态区在函数结束后还能正常访问
 


函数返回全局变量的迭代器(迭代器的实质是指针),函数结束后可以正常访问迭代器指向的元素

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]中提到,一个函数只能返回一个值,但有时候函数需要返回多个值,可以采用返回数组或vector的方式。如果返回的值数量较少,也可以使用引用形参的方法。引用\[2\]给出了一个示例代码,展示了如何使用引用形参返回结果。在这个示例中,函数find_char()返回查询字符串中特定字符的第一次索引位置,并通过额外的引用形参occurs返回该特定字符出现的次数。在函数内部,通过修改occurs的值来记录出现次数。最后,在主函数中调用find_char()函数,并打印返回的索引位置和出现次数。 另外,引用\[3\]中还提到了另一种形式的函数参数,即省略符形参(...)。这种形式的参数可以接受任意数量的参数。但是需要注意的是,省略符形参在使用时需要谨慎,因为它无法提供参数的类型信息,可能会导致类型不匹配的问题。 综上所述,可以使用引用形参返回数组/向量的方式来实现函数的参数返回结果。具体选择哪种方式取决于返回值的数量和类型。 #### 引用[.reference_title] - *1* *2* [C++ 使用引用形参返回额外信息](https://blog.csdn.net/qq_43799400/article/details/124076791)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C++ 函数形参初始化](https://blog.csdn.net/dongnanzhi_/article/details/127149954)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值