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

相关推荐
2601_956121971 小时前
背包基础篇(01、完全、分组、多重、混合)
c++·算法·动态规划
吴声子夜歌2 小时前
Java面试——Spring Cloud原理及应用(二)
java·spring cloud·面试
fpcc2 小时前
跟我学C++中级篇——编译期的条件选择
开发语言·c++
黄敬峰3 小时前
一文搞懂 Docker + Dockerfile:从镜像构建到全栈部署
面试
ShineWinsu6 小时前
对于C++:C++20中线程、初始化、Lambda与内存视图等特性的解析
c++·c++20
kyriewen7 小时前
我踩了3次同一个坑才明白:JavaScript里比0.1+0.2更隐蔽的5个数字陷阱
前端·javascript·面试
张张的快乐时光呀!7 小时前
记录使用 MFC 打开文件对话框读取一张图片并做简单的灰度转换算法简单学习过程
c++·mfc
东华万里9 小时前
第41篇 C++类与对象核心知识梳理:从底层原理到面试实战
开发语言·c++·大学生专区
qq_589666059 小时前
C语言、C++与C#的区别详解
c语言·c++·c#
万法若空10 小时前
排列组合恒等式
c++·算法