【面试题】1、指针常量与常量指针辨析

        在面试中我们经常会被面试官问到什么是常量指针,什么又是指针常量。那么,下面就来解释一下二者的区别。

一、指针常量(int *const c)

        顾名思义,指针常量本质上是一个常量。指针二字是形容词用来修饰常量,表示常量的类型是指针型。就像整型常量、浮点型常量一样,代表本身的值是不会改变的

        相应地,指针常量也就意为着作为一个值不会改变的指针,指向的物理地址是不能改变的。但这个物理地址实际上可以存放不同的数。

        可以将指针常量类比于家庭住址,指针常量代表家庭住址不变。房子的实际地址不会因为里面住的人不同而改变。

         可以看到,当我们改变指针指向时,编译器会报错。

二、常量指针(const int *c, int const *c)

        同样,常量指针的本质是一个普通的指针。与其他类型的指针只有指向数据类型的区别。const int 是一个 int 类型的常量,而常量指针正是指向这样的常量的一种指针例如指向const float test1;的指针亦或指向const char ch;的指针,都被叫做常量指针。因为指针指向的变量的值不可通过该指针修改(但直接改变量是可以的)。

可以看到,当我们通过指针视图修改指向的内容时,编译器报错。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值