程序员之路:C++常量指针和指针常量

简介: 程序员之路:C++常量指针和指针常量

这个问题,我看了三遍,看完就忘记,写下来给未来的自己看

 

首先,先来一个段代码再说

#include <iostream>
using namespace std;
int main(){
    int a=5;
    int b=6;
    //常量指针
    //*p不可修改 *p = 8;(ERROR),p 可以修改 p = &b  (OK)
    const int *p=&a;
    cout<<"*p:"<<(*p)<<endl;
    p=&b;
    cout<<"*p:"<<(*p)<<endl;
    //*p=6;error
    //指针常量
    //*p可以修改*p = 8;(OK),p不可以修改 p++(ERROR)
    int *const q=&a;
    cout<<"*q:"<<(*q)<<endl;
    *q=7;
    cout<<"*q:"<<(*q)<<endl;
    const int * const pq = &a;    // *p 和 p均不可改变了
    return 0;
}

简而言之,就是const修饰谁,谁就是常量,这里把“*”(星号),理解为独立的字符——指针,就比较好理解了

 

1、常量指针:

 

const int *p=&a;

按照,从左往右读,

常量const,指针*,这里把*p,看做一个整体,被const修饰,所以:

*p的值,即a的值,不能通过*p修改;

p的值,即p指向的变量可以修改,上述代码中就把p重新指向了b


p=&b;

2、指针常量:

int *const q=&a;

依然从左往右读,

指针*,常量const,const修饰q,所以:

q的值,不能被修改;

*q的值,可以被修改;

*q=7;

 

3、最后一个是指正和变量都是常量,均不能被修改

const int * const pq = &a;    // *p 和 p均不可改变了


本文参考百度知道,写的其实很清楚了,如果觉得本文内容繁琐,可以参考如下链接

参考:https://zhidao.baidu.com/question/349376199.html

 

欢迎交流 博主QQ:1940607002

相关文章
|
API
vue3 mixins
vue3 mixins
192 0
|
6月前
HarmonyOS NEXT 实战系列06-路由
鸿蒙开发中,页面路由(@ohos.router)和组件导航(Navigation)都支持应用内页面跳转。页面路由更易上手,适合初学者,未来多用于混合场景;而组件导航灵活性更强,支持更丰富的动效与生命周期管理,且更适合一次开发多端部署。 **Router模块**通过URL实现页面切换,提供`router.pushUrl`(压栈跳转,保留当前页状态)和`router.replaceUrl`(替换当前页并销毁)两种模式。同时支持`Standard`(多实例)和`Single`(单实例)实例模式,可传递参数至目标页面。 掌握这些基础,即可进行多页面应用开发。
|
8月前
|
JSON 资源调度 前端开发
axios中的那些代码!
Axios为HTTP请求提供了一个强大的工具集,使得前端开发中与服务器通信变得更加简单和高效。通过掌握Axios的基础用法、拦截器、取消请求以及处理并发请求等高级功能,开发者可以大大提升开发效率和代码质量。希望本文能够帮助你更好地理解和使用Axios。
148 14
|
自然语言处理 搜索推荐 API
GPT-4o mini:探索最具成本效益的语言模型及其在开发中的应用
【8月更文第5天】随着自然语言处理技术的快速发展,语言模型正变得越来越强大且易于访问。OpenAI 最新发布的 GPT-4o mini 模型以其卓越的性能和极具竞争力的价格,迅速成为了业界关注的焦点。作为开发者,您是否已经开始探索这个“迄今为止最具成本效益的小模型”?本文旨在鼓励开发者分享使用 GPT-4o mini 及其他大型语言模型的经验,并探讨如何有效地利用这些工具来提升开发效率和创新能力。
345 0
|
机器学习/深度学习 算法 C语言
【深度学习】优化算法:从梯度下降到Adam
【深度学习】优化算法:从梯度下降到Adam
334 1
|
IDE API 开发工具
什么是 pep 8
【8月更文挑战第29天】
1428 4
|
JavaScript 安全 API
构建高效后端服务:RESTful API 设计与实现
【8月更文挑战第31天】在数字化时代,一个清晰、高效且安全的后端服务是应用程序成功的关键。本文将深入探讨如何设计并实现一个遵循REST原则的API,确保服务的可扩展性和维护性。我们将从基础概念出发,逐步引入真实代码示例,展示如何利用现代技术栈创建高性能的后端服务。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和实用的技巧。
|
运维 Serverless API
Serverless 应用引擎产品使用合集之通过 API 调用 /tagger/v1/interrogate 时,出现unsupported protocol scheme "" 错误,如何处理
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
机器学习/深度学习 编解码 并行计算
【深度学习】多头注意力机制详解
【深度学习】多头注意力机制详解
484 1
ENSP Nat地址转换(配置命令 )
ENSP Nat地址转换(配置命令 )
367 1