C语言面试宝典题目分析(二)

以下黑色文字来自网上流传的《C语言面试宝典》


2、“引用”与指针的区别是什么?

答 、1) 引用必须被初始化,指针不必。

2) 引用初始化以后不能被改变,指针可以改变所指的对象。

3) 不存在指向空值的引用,但是存在指向空值的指针。

指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。

流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用

评注:这不是C语言面试宝典吗?怎么出来引用了?

话说C++的引用当时还迷糊人,因为和Java的引用完全不是一回事。所以我觉得别名更适合描述C++的引用:从一出生,你就属于那个家伙,不管它丑还是帅,也不管他穷还是富,那个啥,贫贱不能移嘛。

Java通过实际行动告诉我们它的引用和C++的指针很像(如果你不管GC的话),大家都存内存地址,灰常和谐。不过,C++的指针就是root了的Java引用,可以参与运算,乍一看还以是个整型呢,Java引用完成的只是作为指针该做的事儿罢了。

其实我是想说“==”运算的,Java引用在进行这个运算的时候比较的是引用自己的值(有点类似地址值),C++指针也是这样,但C++引用一点儿也没个引用样子、呃,参数传递不用构造临时对象那个不算。。。

哎,C#咋就那么非主流呢,自己的string类型号称是引用类型,为啥俩string==的时候比较的是字符串的值?最逗的是它也有Equals函数,比较的是不区分大小写的字符串的值,您比Java碉堡了有木有。哦,我忘了C#好像可以运算符重载,不知道是不是这个原因?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值