C++之函数与变量

本文详细探讨了C++中的函数参数,包括传传递、指针传递、引用传递和数组传递,强调了数组传递时应注意的事项。接着,讨论了函数返回值的处理,如值的返回方式、避免返回局部对象的引用或指针、返回引用和指针的规则。此外,还介绍了内联函数的使用、函数相关的面试题,如函数调用的压栈过程。在类型转换部分,涵盖了dynamic_cast、static_cast、const_cast和reinterpret_cast的用法。最后,文章讲解了C++的五种初始化方式以及变量相关面试题,如左值右值、声明与定义的区别。
摘要由CSDN通过智能技术生成

1.函数参数

1.1 传传递

  • 传传递:函数对形参的所有操作都不会影响到实参

1.2 指针传递

1.3 引用传递

1.4 数组传递

  • 背景:因为不能拷贝数组,所以我们无法以值传递的方式使用数组参数。因为数组会被转换成指针,所以当我们为函数传递一个数组时,实际上传递的是指向数组首元素的指针。
  • 数组传递本质
//尽管形式不同、但这三个print函数等价
//每个函数都有一个const int *类型的形参;
void print(const int *);
void print(const int[]);
void print(const int[10]);
  • 数组形参和const:当函数不需要对数组元素执行写操作的时候,数组形参应该是指向const的指针,只有当函数确实要改变元素值得时候,才把形参定义为指向非const的指针。
  • 数组形参和引用:C++不允许声明引用的数组,原因有:首先引用必须被初始化,而数组并不能被另一个数组初始化被另一个数组赋值,也就是说没有办法完成引用的初始化;其次引用不占用新的空间,因此根本就没有空间可以分配给引用。但是C++允许将变量定义为数组的引用,同时形参也可以是数组的引用。例如:
//数组的引用;
int arr[3] = {
   2,3,4};  //arr是数组变量名,int[3]是类型; 
int (&ref)[3] = arr;   //正确,&ref是引用名,int[3]是类型; 

//形参是数组的引用,维度是类型的一部分;
void print(int (&arr)[10]){
   
	for(auto elem:arr)
		cout<<elem<<' ';
}
//主函数
int i=2;j[2]={
   1,2};
int k[10]={
   1,2,3,4,5,6,7,8,9,10};
print(&i);   //错误,实参不是含有10个整数的数组;
print(j)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值