指针常量和常量指针区别

指针常量和常量指针区别1 指针常量 指针类型的常量 int constp 本质上一个常量 指针用来说明常量的类型 表示该常量是一个指针类型的常量 在指针常量中 指针自身的值是一个常量 不可改变 始终指向同一个地址 在定义的同时必须初始化 用法如下 inta 10 b 20 int constp amp a p 30 p 指向的地址是一定的 但其内容可以修改 2 常量指针 指向 常量 的指针 constint p intconst p 常量指针本质上是一个指

1、指针常量——指针类型的常量(int *const p)

本质上一个常量,指针用来说明常量的类型,表示该常量是一个指针类型的常量。在指针常量中,指针自身的值是一个常量,不可改变,始终指向同一个地址。在定义的同时必须初始化。用法如下:

int a = 10, b = 20; int * const p = &a; *p = 30; // p指向的地址是一定的,但其内容可以修改

2、常量指针——指向“常量”的指针(const int *p, int const *p)

常量指针本质上是一个指针,常量表示指针指向的内容,说明该指针指向一个“常量”。在常量指针中,指针指向的内容是不可改变的,指针看起来好像指向了一个常量。用法如下:

int a = 10, b = 20; const int *p = &a; p = &b; // 指针可以指向其他地址,但是内容不可以改变

 

3、例题

int main() { int m = 10; const int n = 20; // 必须在定义的同时初始化 const int *ptr1 = &m; // 指针指向的内容不可改变 int * const ptr2 = &m; // 指针不可以指向其他的地方 ptr1 = &n; // 正确 ptr2 = &n; // 错误,ptr2不能指向其他地方 *ptr1 = 3; // 错误,ptr1不能改变指针内容 *ptr2 = 4; // 正确 int *ptr3 = &n; // 错误,常量地址不能初始化普通指针吗,常量地址只能赋值给常量指针 const int * ptr4 = &n; // 正确,常量地址初始化常量指针 int * const ptr5; // 错误,指针常量定义时必须初始化 ptr5 = &m; // 错误,指针常量不能在定义后赋值 const int * const ptr6 = &m; // 指向“常量”的指针常量,具有常量指针和指针常量的特点,指针内容不能改变,也不能指向其他地方,定义同时要进行初始化 *ptr6 = 5; // 错误,不能改变指针内容 ptr6 = &n; // 错误,不能指向其他地方 const int * ptr7; // 正确 ptr7 = &m; // 正确 int * const ptr8 = &n; *ptr8 = 8; return 0; }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177793.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午6:44
下一篇 2026年3月26日 下午6:44


相关推荐

  • testlink安装教程_轻松吊安装

    testlink安装教程_轻松吊安装采用Xmapp的配置环境,TestLink轻松搞定!

    2026年1月18日
    5
  • js全局替换回车换行符

    js全局替换回车换行符踩了个坑,记录一下。全局换行符是这样用php加上的因为显示的时候需要换行显示但是保存的时候不能把回车换行符保存进数据库呀,所以在保存之前要再次把回车换行符替换没了,发现用js替换\r\n无效,思考了一下,可能是html显示是自动过滤了\r,而以\n来显示吧。于是把替换代码改成:varemialStr=$(“#mail”).val();emialStr=emialStr.r

    2022年5月23日
    134
  • android studio不能输入中文_Android模拟器

    android studio不能输入中文_Android模拟器很多Android项目的运行都需要用到中文输入法,在一年前的AndroidStudio需要导入输入法apk安装,现在新版的AndroidStudio免去了这个麻烦,下面就教大家如何设置谷歌拼音输入法。

    2022年8月30日
    4
  • Sass、LESS 和 Stylus区别总结

    Sass、LESS 和 Stylus区别总结CSS 预处理器技术已经非常的成熟了 而且也涌现出了越来越多的 CSS 的预处理器框架 本文便总结下 Sass LessCSS Stylus 这三个预处理器的区别和各自的基本语法 1 什么是 CSS 预处理器 CSS 预处理器是一种语言用来为 CSS 增加一些编程的的特性 无需考虑浏览器的兼容性问题 例如你可以在 CSS 中使用变量 简单的程序逻辑 函数等等在编程语言中的一些基本技巧 可以让 CSS 更

    2026年3月20日
    3
  • Red Hat Enterprise Linux ISO 全镜像下载

    Red Hat Enterprise Linux ISO 全镜像下载1、iso网盘下载地址:https://wanghualang.pipipan.com/dir/13133650-26232498-a8efb3/2、中国大陆开源镜像站汇总,企业贡献: 搜

    2022年7月2日
    28
  • python爬虫–scrapy(再探)

    python爬虫–scrapy(再探)

    2021年4月19日
    153

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号