C语言关键字const和指针的结合使用
本文向大家介绍C语言关键字const和指针的结合使用,包括了C语言关键字const和指针的结合使用的使用技巧和注意事项,需要的朋友参考一下
我们先定义三个变量
1、const int *p1
2、int const *p2
3、int *const p3
p1、p2、p3这三个指针都是指向int类型的,那它们有什么区别呢
写个代码测试一下
编译一下
可看到第11,12,16行报错,从中可得出以下结论:
const int * 与 int const *是一样的效果,指向的内存是不能改变的,即指针指向的内容是只读的,或者说是一个常量。不过指向的位置是可以更改的,即p1和p2可以重新指向别的常量。
而char *const 刚好相反,表示指针的内容是只读的,即指针指向的位置是不可修改的,但是指针指向的内存是可读可写的。
如果指向的内存和位置都是不能改的呢?
哈哈哈,肯定都能想到,
int *const const pointer 与 const int *const pointer 都是可以的。
那如果const和typedef一起用会怎么样?
//先定义个新类型 typedef int *intp; const intp p1; intp const p2;
p1和p2,哪个指向的位置不能变,哪个指向的内存不能变呢?
答案是:p1和p2是一样的,都是指向的位置不能变,即如果指向了a,就不能再指向b。
所以如果想指向的内容不能变,就不能用typedef来定义新类型了。
下面是验证代码和编译结果
总结
以上所述是小编给大家介绍的C语言关键字const和指针的结合使用,希望对大家有所帮助!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#yiidian.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。