C++中常量指针和指针常量的区别

C++中常量指针和指针常量的区别一 常量指针常量指针本质是指针 常量修饰它 表示这个指针是一个指向常量的指针 变量 也就是指向一个无法修改的量 C 中常量指针定义为 constint a 当然 intconst a 也可以 不过习惯用第一种了 使用常量指针时要注意 指针指向的对象不能通过这个指针来修改 因为对象现在是常量了 不可以修改 例如 inttmp 65 constint c amp

一、常量指针

常量指针本质是指针,常量修饰它,表示这个指针是一个指向常量的指针(变量),也就是指向一个无法修改的量。

C++中常量指针定义为:const int* a,当然int const * a也可以,不过习惯用第一种了。

使用常量指针时要注意,指针指向的对象不能通过这个指针来修改,因为对象现在是常量了,不可以修改,例如:

int tmp = 65;

const int *c = &tmp; // 这是合法的,但是*c就必须指向tmp了

*c = 6; // 非法,指向内容是常量!常量!常量!,无法修改。

其实我们使用的系统函数中,许多参数都是const修饰的。例如,strcmp声明是这样的:

int strcmp(const char *str1, const char *str2);

其中str1和str2都是常量字符指针,可是这个函数却可以接收非常量字符串。例如这段程序:

char *str1, *str2;

str1 = “gggggg”;

str2 = “bbbbbb”;

str1和str2的内容显然是可以更改的,例如可以使用“str1[0] = b;”这样的语句把str1的内容由“ggggg”变为“bgggg“”。因为函数的参数声明用了常量指针的形式,就保证了在函数内部,一旦指向那个常量,指向内容就变成常量无法更改。所以对str1和str2的内容更改的操作在函数内部是不被允许的。

 

二、指针常量

指针常量的本质是一个常量,而用指针修饰它,指针无法修改,指针指向的内容可以修改。

在C/C++中,指针常量这样声明:

int a;

int *const b = &a; //此时const修饰a

只要const位于指针声明操作符右侧,就表明声明的对象是一个常量即b,且它的内容是一个指针,也就是一个地址。

因为指针常量是一个常量,在声明的时候一定要给它赋初始值。一旦赋值,以后这个常量再也不能指向别的地址,但是地址是的值可以改变。

char *a = “agafqawefga”;

char *b = “hdfafd”

int *const c = &b;

此时,c必须指向b,但是我们可以通过修改b上的值来修改c。

 

三、指针常量和常量指针

1,常量指针,是指向常量的指针,指针指向的内容无法修改,指针可以修改。

     指针常量,是一个常量,常量是指针,指针无法修改,指针指向的内容可以修改。

2,const char *p,const修饰(char  *),*p = ‘b’非法,p =&q合法,

      char *const p = &b,const修饰(b),*p = ‘b’合法,p = &q非法。

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

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

(0)
上一篇 2026年3月17日 下午12:21
下一篇 2026年3月17日 下午12:21


相关推荐

  • java中判断两个字符串是否相等「建议收藏」

    java中判断两个字符串是否相等「建议收藏」java中判断两个字符串是否相等

    2022年4月24日
    116
  • 3D建模场景怎么做?

    3D建模场景怎么做?在开始做3d场景之前,我绘制了一些草图。选好需要的草图后(图01),我用3dsmax从标准几何体开始制作模型,还使用了像lathe,bevel以及unwrapuvw这类的基本修改器。用不同的参数值进行复制(图02)。为了完成这个项目,一些额外的模型也是必须的(图03)。图01图02图03开始制作材质也就意味着有趣的一部分工作开始了。我喜欢用unwrap修改器工作,然后将所有的展开的渲染图全部输入到photoshop软件中,在photoshop中我可以根据…

    2022年6月3日
    48
  • python循环一百次_python循环

    python循环一百次_python循环解决重复操作 循环避免了出现大量的重复操作 比如要计算 1 2 3 我们可以直接写表达式 gt gt gt 1 2 36 但是要计算 1 100 的累加和 我们不可能一个一个的去加 为了让计算机能计算成千上万次的重复运算 我们就需要循环语句 forPython 的循环有两种 一种是 for in 循环 依次把 list 或 tuple 中的每个元素迭代出来 的特点是容易使用需要明确循环次数 看例子

    2026年3月16日
    1
  • 2026年最新小龙虾OpenClaw安装全攻略,新手10分钟轻松搞定!

    2026年最新小龙虾OpenClaw安装全攻略,新手10分钟轻松搞定!

    2026年3月13日
    3
  • PyCharm为什么这么牛?

    PyCharm为什么这么牛?这两年被 Python 初学小白问到最多的问题就是 该用什么代码编辑工具 说实话 我个人是用 JupyterNoteb 最多 主要是经常做数据可视化 方便些 但对于初学者来说 PyCharm 仍是不二的选择 甚至我建议你只用 PyCharm 从当前所有主流 PythonIDE 来看 PyCharm 是最适合做 Python 开发的 特别对新手而言 可以节省很多不必要的时间成本 我也常

    2026年3月27日
    2
  • scrapy ROBOTSTXT_OBEY 协议:「建议收藏」

    scrapy ROBOTSTXT_OBEY 协议:「建议收藏」

    2022年6月12日
    27

发表回复

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

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