iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++ const和指针详情
  • 690
分享到

C++ const和指针详情

2024-04-02 19:04:59 690人浏览 独家记忆
摘要

目录1、指针和const1.1 指向常量的指针1.2 const指针1.3 指针和内容都不可变1、指针和const 我们知道const关键字修饰的是不可变量,将它和指针一起使用,会有

1、指针和const

我们知道const关键字修饰的是不可变量,将它和指针一起使用,会有很多微妙的地方。

关于使用const来修饰指针,有两种不同的方式。第一种是让指针指向一个常量对象,这样可以防止使用该指针进行修改指向的值。第二种则是将指针本身声明为常量,可以防止改变指针指向的位置。下面我们来看下细节。

1.1 指向常量的指针

首先是指向常量的指针,含义是指针的类型是一个常量类型。所以写成:


const int * p;


可以理解成p是一个指针,它的类型是const int,也就是常量类型。它既可以用来指向一个常量类型,也可以指向一个非常量类型,下方的这两种方式都是合法的:


int age = 23;
const int* p = &age;

const double price = 233;
const double* pt = &price;


但是反过来,将一个const类型的变量赋值给一个非const的指针是非法的:


const int age = 23;
int* p = &age; // 非法


如果非要这样做,可以使用const_cast运算符进行强制转换,这个我们会在之后的文章当中讨论。

另外还有一个很有意思的点,如果我们将一个非const类型的变量赋给了const类型的指针,虽然我们无法通过指针修改对应的值,

但是通过变量修改却是可以的:


int age = 23;
const int* p = &age;

*p = 233; // 非法
age = 233; // 合法


还有,我们无法修改指针指向的值,但是修改指针指向的位置是可以的:


int age = 23;
int price = 233;
const int* p = &age;
p = &price;

1.2 const指针

上面我们介绍了指向const的指针,还有另外一种指针叫做const指针。const指针指的是指针本身是const修饰的,我们无法修改指针指向的位置。


int age = 23;
int* const p = &age;


但是我们修改指针指向的值是可以的:


*p = 2333; // 合法

1.3 指针和内容都不可变

当然我们也可以将两种const叠加使用,让指针指向的对象以及对象的值都不可修改:


const int * const p = &age;

到此这篇关于c++ const和指针详情的文章就介绍到这了,更多相关C++ const和指针内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

文章转自公众号:Coder梁(ID:Coder_LT)

--结束END--

本文标题: C++ const和指针详情

本文链接: https://www.lsjlt.com/news/157424.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++ const和指针详情
    目录1、指针和const1.1 指向常量的指针1.2 const指针1.3 指针和内容都不可变1、指针和const 我们知道const关键字修饰的是不可变量,将它和指针一起使用,会有...
    99+
    2024-04-02
  • C++this指针详情
    还是Stock股票这个类,假设我们要实现一个方法,比较一下当前股票和传入的股票, 返回价格高的那个股票。在我们实现的时候,会遇到一点问题。 const Stock & Sto...
    99+
    2024-04-02
  • C++数组指针和二维数组详情
    目录1、二维数组2、数组指针和二维数组1、二维数组 对于一维数组,int arr[10]; arr是数组名,也是首元素的地址,&arr是数组的地址,那么对于二维数组 int ...
    99+
    2024-04-02
  • C语言中const,指针和引用的关系
    目录const 与指针const 与引用const 与指针、引用总结const 与指针 我们写一段代码来探究以下 int a = 10, b = 20; int* p1 = &...
    99+
    2024-04-02
  • 深入了解C语言中的const和指针
    目录前言指针的赋值问题ANSI C 有关简单赋值的标准问题解决const修饰const修饰变量const修饰指针前言 文章内容由阅读《C专家编程》整理而来。希望可以帮助大家解决在指针...
    99+
    2024-04-02
  • C语言中const和指针的秘密你知道吗
    目录指针的赋值问题ANSIC有关简单赋值的标准问题解决char*和constchar*char**和constchar**const修饰const修饰变量const修饰指针const...
    99+
    2024-04-02
  • C语言编程const遇上指针分析
    const关键字 可以有很多用处,比如: #define ROW 10 就代表ROW的值恒为10,不可修改。 而 const int ROW=10; 也可以将值恒定,无法修...
    99+
    2024-04-02
  • C++ 函数指针参数的 const 限定符
    C++ 函数指针参数的 const 限定符 函数指针是指向函数的指针,它提供了在运行时动态调用函数的能力。函数指针参数通常用于将回调传递给其他函数。 const 限定符可以应用于函数指...
    99+
    2024-04-20
    const 函数指针 c++ 最大公约数
  • C语言中const,指针和引用的关系是什么
    这篇“C语言中const,指针和引用的关系是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言中const,指针和引用...
    99+
    2023-06-26
  • C++指针与数组:指针详解
    目录一. What(什么是指针)1. 地址初了解2. 指针概念3. 指针与指针变量二. Why(为什么要有指针)三. How(如何使用指针)1. 基本定义2. 取地址操作符 &...
    99+
    2024-04-02
  • C语言指针详解之野指针
    目录指针是什么?怎么表示?什么是指针变量?指针类型又是什么?指针类型存在的意义野指针是什么?野指针产生的原因一、 指针未初始化二、 指针越界访问如何避免野指针(野狗)的出现呢?指针运...
    99+
    2024-04-02
  • C++ const的使用及this指针常方法(面试最爱问的this指针)
    目录1. const的使用2. this指针 2.1 前言(this指针的引出)2.2 什么是this指针2.3 this指针的特性2.4 [面试题1] this指针存在哪...
    99+
    2024-04-02
  • C++的指针,引用和STL详解
    目录指针、引用指针引用STLSTL中六大组件常用容器用法介绍vec.front(), vec.back()        返回vector的首...
    99+
    2024-04-02
  • c++函数名指针和函数指针
    目录前言例 1例 2例 3前言 我们先来看一下函数指针式如何定义的,假如我们有一个函数int fun(int){…};那么他对应的函数指针写法就应该是int (*p)(...
    99+
    2024-04-02
  • C++二级指针和指针的引用
    目录1、形参与实参均为指针时达不到此目的2、解决方案——指针引用或二级指针(1)形参为二级指针**p(2)形参为指针引用*&p3、总结 目的:形参指针...
    99+
    2024-04-02
  • C++常量指针,指针常量,指向常量的常指针详解
    目录什么是指针内存地址指针所占内存const 变量指针常量,常量指针和指向常量的指针指针常量常量指针指向常量的常指针空指针、野指针总结什么是指针 指针就是指向变量在内存中的地址 数据...
    99+
    2024-04-02
  • C语言的空类型指针,空指针,野指针详解
    目录空类型指针-void*空指针-NULL野指针造成野指针的原因1.指针未初始化2.指针越界访问3.指针指向的空间已经释放避免野指针总结空类型指针-void* void是空类型,vo...
    99+
    2024-04-02
  • C++函数指针详解
    函数指针基础: 1. 获取函数的地址 2. 声明一个函数指针 3.使用函数指针来调用函数 获取函数指针: 函...
    99+
    2024-04-02
  • C++对象模型和this指针详解
    目录对象模型一、二、三、四、五、this指针一、二、总结对象模型 成员变量和成员函数分开存储 一、 只有非静态成员变量才属于类的对象上 空对象占用字节为1 class Pe...
    99+
    2024-04-02
  • C++指针学习详解
    目录指针的基本概念一、指针变量的定义和使用二、指针所占的空间内存1.空指针 野指针2. const修饰指针利用指针访问数组中的每个元素.总结指针的基本概念 指针的作用:可以通过指针间...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作