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的几个操作都是错误的。

相关推荐
LingzhiPi几秒前
零知派ESP32--AS5600磁吸旋钮音量控制器
c++·单片机·嵌入式硬件
GitLqr6 分钟前
StatefulWidget 里的隐形炸弹:为什么不要在 State 类中使用 context.mounted
flutter·面试·dart
小保CPP12 分钟前
OpenCV C++车型识别1-图像预处理
c++·人工智能·opencv·计算机视觉
库克克35 分钟前
【C++】C++11 包装器function 与 绑定器 bind
开发语言·c++
小小龙学IT1 小时前
C++ Placement New 与显式析构:手动对象生命周期管理的艺术
c++·windows·mfc
小保CPP1 小时前
OpenCV C++车型识别2-形状匹配
c++·人工智能·opencv·计算机视觉
梦想的颜色1 小时前
2026 AI Agent 工程师完整技术图谱|从面试题「什么是本体 Ontology」切入,附精选面试题库
面试·知识图谱·langgraph·aiagent·大模型面试·本体·2026 面试真题
不简说2 小时前
JS 代码技巧 vol.10 — 20 个 V8 引擎原理,解释"为什么这样写快"
前端·javascript·面试
醉城夜风~3 小时前
手撕 C++ string:从零实现一个简易字符串类
开发语言·c++·算法
nLif3 小时前
进程管道通讯-伪终端方式
c++·windows