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

相关推荐
deng-c-f15 分钟前
C/C++内置库函数(6):C++中类什么时候使用静态变量
开发语言·c++
2301_7890156219 分钟前
C++:模板进阶
c语言·开发语言·汇编·c++
better_liang22 分钟前
每日Java面试场景题知识点之-单例模式
java·单例模式·设计模式·面试·企业级开发
是小胡嘛28 分钟前
仿Muduo高并发服务器之Buffer模块
开发语言·c++·算法
Java天梯之路32 分钟前
手撸 Spring 简易版 AOP
java·spring boot·面试
im_AMBER33 分钟前
Leetcode 75 数对和 | 存在重复元素 II
c++·笔记·学习·算法·leetcode
Java天梯之路33 分钟前
Spring AOP 源码深度解析:从代理创建到通知执行的完整链路
java·spring boot·面试
ZXF_H33 分钟前
C/C++ OpenSSL自适应格式解析证书二进制字节流
c语言·开发语言·c++·openssl
神仙别闹1 小时前
基于QT(C++)实现B树可视化
c++·b树·qt
咕咕嘎嘎10241 小时前
C++模板特化
c++