const与指针-有趣的结合。。。。
c语言吧
全部回复
仅看楼主
level 11
pengzhenxx 楼主
1、const常指针这是个冷门,但却经常出现的C语言知识。。。
在Linux中随便man几个字符串相关的函数都会出现 const char* p;这样的申明,比如最常用的strcmp
这种加const的常指针和普通指针最大的区别就在于:普通指针本身是个变量既可以改变指向,又可以其指向的内容。而加const的常指针是不能其指向的内容,但可以改变其指向,什么意思。。。可以看个简单的例子:
这些写有什么好处?其实没什么好处,就是告诉其他调用你这个函数的程序员,你虽然传的地址,但是我的这个函数不会改变你原来的值,仅此而已,主要是你封装的库给别人用时,尽量用这种写法。。。
2018年09月20日 03点09分 1
level 11
pengzhenxx 楼主
2、const写到前面的指针,这种指针很特殊,其本质就是很多高级语言中的“引用”。
这么写指针的估计很少见比如:int* const pa;,这种指针和上面的正好相反,不能改变指向,但却可以改变其指向的内容,比如:
但是改变指向就错了:
很多取消指针的高级语言,中的所谓引用就是如此,你随便给a起多少个引用别名都可以,但是就是不能改变你这个引用别名的指向
2018年09月20日 03点09分 2
level 15
顶层和底层const
2018年09月28日 19点09分 4
1