指针指向常量_常量指针的四种

指针指向常量_常量指针的四种const关键字指针常量和常量指针都离不开const关键字,我们先来了解一下什么是const关键字,const被用来定义常量,如果将一个变量加上const关键字,则被修饰的变量的值将无法改变。这个变量的值只能被访问,无法被修改。const关键字可以修饰变量或者指针。下面是const修饰变量的用法:constinta=6;或者intconsta=6;此时变量a…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

const关键字

指针常量和常量指针都离不开const关键字,我们先来了解一下什么是const关键字,const被用来定义常量,如果将一个变量加上const关键字,则被修饰的变量的值将无法改变。这个变量的值只能被访问,无法被修改。const关键字可以修饰变量或者指针。

下面是const修饰变量的用法:

const int a = 6;

或者 int const a = 6;

此时变量a的值无法改变,只能访问,不能改写

指针常量 

指针本身是一个常量,不能更改指针指向的地址,只能更改指针指向地址的值

#include <iostream>
using namespace std;

int main() {
	int a = 100, b = 200;

	int* const p = &a;
	*p = 200;
        // p = &b;   错
        // p指针指向的地址不能更改为b的地址,否则是不对的

	cout << "指针p指向的值为:" << *p << endl;
	cout << "a的值为:" << a << endl;
	cout << "b的值为:" << b << endl;

	return 0;
}
// 输出结果

指针p指向的值为:200
a的值为:200
b的值为:200

常量指针

常量指针指的是一个常量,所以指针指向的值是不能改变的,但是指针指向的地址是可以改变的

#include <iostream>
using namespace std;

int main() {
	int a = 100, b = 200;

	const int* p = &a;       // 也可以写成 int const * p = &a; 二者只是格式上的差别,都可以使用
	p = &b;
        // *p = 200; 错
        // 这时不能改变指向地址的值,只能更改指向的地址

	cout << "指针p指向的值为:" << *p << endl;
	cout << "a的值为:" << a << endl;
	cout << "b的值为:" << b << endl;

	return 0;
}
// 输出结果

指针p指向的值为:200
a的值为:100
b的值为:200

区别

注意指针常量和常量指针的区别,指针常量只能改变值,不能改变地址,常量指针只能改变地址,不能改变值。

如果要想值和地址都不改变可以同时在前后都加上const关键字

例:

int a = 100,b = 200;

const int * const p = &a;

// 此时指针p指向a的地址,指针指向不能指向别的值,指针的值也无法改变

// p = &b;     错

// *p = 200;    错

如有错误,欢迎指正! 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179663.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MybatisCodeHelperPro2.9离线激活码-激活码分享

    (MybatisCodeHelperPro2.9离线激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1PA3AFINM4-eyJsaWNlbnNlSWQi…

    2022年3月31日
    907
  • webstrom激活码【注册码】

    webstrom激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    44
  • JSP的include指令

    JSP的include指令在JSP中,可以使用include指令来包含其他jsp文件。例如,一个网站中,多个网页具有很大部分是相同元素时,可以使用include指令来完成。include的指令的语法如下:<%@inc

    2022年6月30日
    18
  • java心得体会_初学java之心得体会

    java心得体会_初学java之心得体会0.前言从学习java以来,已经进行过三次pta作业的训练。虽然每次作业的完成都遇到了些许困难和障碍,不是一帆风顺的,但通过自己的摸索,实践,总能完成作业要求,每次作业之后都有不同的收获。这些新的收获告诉我,实践出真知,动手会学习到更多东西。总结前面的三次作业,我发现面向对象程序设计这种语言不再那么神秘,我相信马上就能看到揭开神秘面纱后的的它。1.作业过程总结(1).总结三次作业的知识迭代关系第一…

    2022年7月9日
    16
  • 微博java SDK介绍及使用说明

    微博java SDK介绍及使用说明

    2021年9月4日
    57
  • 空间向量和矩阵_线性无关的函数内积为零吗

    空间向量和矩阵_线性无关的函数内积为零吗文章目录前言一、集合的基本概念二、向量空间1.运算规则和定理2.RnR^nRn和CnC^nCn三、实内积空间1.内积2.范数四、复内积空间五、线性映射前言本文学习过程来源是《矩阵分析与应用-张贤达》一书.可以通过z-lib下载.线性空间是某一类事物在矩阵代数里的一个抽象的集合表示,线性映射或线性变换则反映线性空间中元素间最基本的线性关系.上面这句话出自书中第14页开头,读下来第一感觉就是云里雾里,毕竟出现了新的名称.对于线性空间可以简单的把它理解为几何空间(实际上不仅仅

    2022年10月21日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号