C++面试,const的使用

cpp 复制代码
#include <iostream>
#include <cstring>

int main() {

    const int x = 1;
    int b = 10;
    int c = 20;

    const int* a1 = &b;
    int* const a2 = &b;
    const int* const a3 = &b;

    x = 2;

    a1 = &c;
    *a1 = 1;

    a2 = &c;
    *a2 = 1;

    a3 = &c;
    *a3 = 1;

    return 0;
}

错误1:

x=2,由于变量x为整型常量,因此不能改变x的值。

错误2:

a1定义为const int* 类型,这里的const在int*的左侧,它是用来修饰指针所指向的变量,即指针指向为常量。所以 a1=&c,这个操作是可以的,但是*a1=1,改变了指向的内容是不允许的。

错误3:

a2定于为int* const类型,注意这里的const在int*的右侧,它是用来修饰指针本身的,即指针本身为常量。所以a2=&c,这个操作是不可以的,但是*a2=1,修改了指向的内容是可以的。

错误4:

a3定义为const int* const 类型,这里的两个const分别出现在int*的左侧和右侧,因此它表示不仅指针本身不能修改,并且其指向的内容也不能修改。所以关于a3的几个操作都是错误的。

相关推荐
悄悄敲敲敲10 分钟前
C++第14届蓝桥杯b组学习笔记
c++·学习·算法·蓝桥杯
努力学习的小廉22 分钟前
【C++11(下)】—— 我与C++的不解之缘(三十二)
开发语言·c++
无知的前端1 小时前
iOS开发,runtime实现切片编程原理以及实战用例
ios·面试·性能优化
leopai1 小时前
面试官最喜欢问的:前端怎么自动检测代码更新?
前端·javascript·面试
爱上大树的小猪1 小时前
【前端进阶】可选链与空值合并:接口数据容错处理的最佳实践
前端·javascript·面试
顾林海1 小时前
深度解析LinkedList工作原理
android·java·面试
uhakadotcom1 小时前
Guava 简介:让 Java 开发更高效
后端·面试·github
Hello.Reader1 小时前
迭代器介绍与使用(四十一)
开发语言·c++
雷渊1 小时前
分析@Autowired和@Resource的使用场景
java·后端·面试
小样vvv1 小时前
【面试篇】Es
elasticsearch·面试·职场和发展