C/C++何时使用引用和指针
1个回答
展开全部
这个问题不太容易严格区分,不过可以简单说一下。
指针:大家都知道,指向一个内存地址。但同时请注意一个东东,就是指针的步长(我叫它步长)其实就是指针的类型。C/C++中,类型转换对于指针来说同样适用,也就是可以改变步长。所以它比较特别,灵活性很大。更特别的一点是:它可以什么也不指向,就对着NULL/0。
引用:它的局限性要大很多,它只是一个对象的别名。这个别名的意思就是“它是依赖别的对象存在现而存在,它不会独立存在!”。所以请特别注意,引用必须指向一个已经存在的对象,不可以凭空存在。
明显的区别:
指针不依赖于对象的存在而存在,就是可以“凭空存在”;而引用不能“凭空存在”,必定指向一个对象。
一般来说,能用引用的地方,用指针也可以。但是指针太灵活(它可以指向NULL),然而如果此时提取指针对象就会出现“不明确行为”的严重错误。然而用引用就不会出现这样的错误,因为引用必须指向一个已经存在的对象,它不会为空。
想说也就是这么多了,希望你多多使用就能多多体会了。
指针:大家都知道,指向一个内存地址。但同时请注意一个东东,就是指针的步长(我叫它步长)其实就是指针的类型。C/C++中,类型转换对于指针来说同样适用,也就是可以改变步长。所以它比较特别,灵活性很大。更特别的一点是:它可以什么也不指向,就对着NULL/0。
引用:它的局限性要大很多,它只是一个对象的别名。这个别名的意思就是“它是依赖别的对象存在现而存在,它不会独立存在!”。所以请特别注意,引用必须指向一个已经存在的对象,不可以凭空存在。
明显的区别:
指针不依赖于对象的存在而存在,就是可以“凭空存在”;而引用不能“凭空存在”,必定指向一个对象。
一般来说,能用引用的地方,用指针也可以。但是指针太灵活(它可以指向NULL),然而如果此时提取指针对象就会出现“不明确行为”的严重错误。然而用引用就不会出现这样的错误,因为引用必须指向一个已经存在的对象,它不会为空。
想说也就是这么多了,希望你多多使用就能多多体会了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询