点击上方公众号名称关注,获得更多内容
✎ 编 者 悟 语当你不知道为什么去坚持的时候,就用已有的习惯去做吧,也许有一天你会发现,相对于整件事情来说,也许并不需要时时刻刻的去支撑。
文 章 导 读
今天给大家对比了一下C语言指针的地址传递与C++引用的关系,可以说C++的引用是对C语言的一种封装性的扩展,封装之后更方便灵活,就让我们从代码中去对比体会吧,希望对大家有所帮助哈,!
1引用是什么引用就是某一变量的一个别名,对引用的操作与对变量直接操作完全一样。
C++在保留指针的情况下扩展了类、继承、多态等内容,目的是对于细节明确的用指针去操作,不需要深究细节的就用封装的类和继承以降低难度和编码的效率。
但从本质来说,由于C++是用C实现的,所以很多类的封装都是用指针实现的,所以C++的一些属性中会有C的身影,所以我们下面的对比就不足为怪了。
2C++中的引用作用的对象在C++中引用作用的对象主要有参数、返回值,作为常引用。
1)引用作用于参数
函数功能:通过引用函数修改引用函数之外的变量的值。
#include
using namespace std;int quote(int &val);int main(int argc, char** argv) {int num = 1, temp;
cout <"\nThe num's raw value is " <
temp = quote(num);
cout <"\nAfter calling the quote function the num's value is " <return 0;
}int quote(int &val){
val = 2;return val;
}
运行结果如下:
3用C中指针模拟实现引用的功能结论:按引用传参与按指定传参效果是一样的。
1)引用与指针和数组的关系
严格讲C语言中总是按值传参的,可以定义接受指针的函数,调用使用&操作符。
当函数传入数组时,编译器本质实际上就是模拟引用传参。
C中的模拟引用传参实在是地址传递。
传递地址一种情况是&取地址,一种情况是数组名衍生的数组地址(实质也是指针)。
2)C语言中模拟引用的方式(实例演示)
#include
#include int ana_quote(int *pval);int main(int argc, char *argv[]) {int *p,val = 5,tmp;
printf("\nThe raw pointer's value is %d",val);
tmp = ana_quote(&val);
printf("\n\nThe called ana_quote's value is %d",val);return 0;
}int ana_quote(int *pval){int temp;
temp = ++(*pval);return temp;
}
运行结果如下:
结论:用&取地址作为函数的指针参量,可以实现引用的效果。
总结
今天给大家介绍了下C语言的指针与C++引用相似的点,为的是让大家对这两种语言在变量参量引用上有一个更清晰认识,后面还会有C语言相关的内容,小伙伴们敬请期待哈,。
有问题可以后台留言交流,公众号18年后新申请的,文章后不支持留言功能的。
相关文章:
内存分配函数malloc、calloc、realloc的功能测试
static关键字的3种特性
用结构体和指针模拟配置芯片引脚输出高低电平
C标准库函数sprintf和sscanf的使用
用Dev-C++生成dll动态链接库文件并用C代码调用
宏分类的妙用(排版开始用模板)
进化论——从函数指针到被结构封装的函数指针及参数的应用举例
专辑推荐:
Python技能专辑
C语言专辑
IDE调试专辑
软件推荐专辑
软实力专辑
Linux专辑
扫码关注我们
❖ Game Over!