常量指针,指针常量的区别是什么_指针常量与常量指针

常量指针,指针常量的区别是什么_指针常量与常量指针**要有具备扎实指针知识……了解引用、指针的一些注意事项:引用并非对象引用必须初始化引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果绑定在一起类型要严格匹配一、常量指针定义:又叫常指针,可以理解为常量的指针,也即这个是指针,但指向的是个常量,这个常量是指针的值(地址),而不是地址指向的值。关键点:常量指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改;常量指针可以被赋值为变量的地址,之所以叫常量指针,是限制了通过这个指针修改变量的值;指针还可以指向别

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

Jetbrains全系列IDE稳定放心使用

**要有具备扎实指针知识……
了解引用指针的一些注意事项:

  • 引用并非对象
  • 引用必须初始化
  • 引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果绑定在一起
  • 类型要严格匹配

一、常量指针

定义
又叫常指针,可以理解为常量的指针,也即这个是指针,但指向的是个常量,这个常量是指针的值(地址),而不是地址指向的值。

特点

  • 常量指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改;
  • 常量指针可以被赋值为变量的地址,之所以叫常量指针,是限制了通过这个指针修改变量的值;
  • 指针还可以指向别处,因为指针本身只是个变量,可以指向任意地址;

表示形式
int const* p1; const int* p1;

二、指针常量

定义
本质是一个常量,而用指针修饰它。指针常量的值是指针,这个值因为是常量,所以不能被赋值。

特点

  • 它是个常量!
  • 指针所保存的地址可以改变,然而指针所指向的值却不可以改变
  • 指针本身是常量,指向的地址不可以变化,但是指向的地址所对应的内容可以变化;

表示形式:

int* const p1;

三、两者区别

//——-常量指针——- //
const int *p1 = &a; a = 200; //OK,仍然可以通过原来的声明修改值,
// *p1 = 13; //Error,*p1是const int的,不可修改,即常量指针不可修改其指向地址
p1 = &b; //OK,指针还可以指向别处,因为指针只是个变量,可以随意指向;

//——-指针常量——-//
int* const p2 = &a; a = 200; //OK,仍然可以通过原来的声明修改值,初始化的就给它分配地址,可以的(相当于分配初值);
*p2 = 900; //OK,指针是常量,指向的地址不可以变化,但是指向的地址所对应的内容可以变化
//p2 = &b; //Error,因为p2是const 指针,因此不能改变p2指向的内容

补集一个:

//——-指向常量的常量指针——-//
const int* const p3 = &a; //*p3 = 1;
//Error //p3 = &b; //Error
a = 10; //OK,仍然可以通过原来的声明修改值

四、代码实现、实例讲解
——-常量指针——-

#include <stdio.h>
int main()
{ 
   
        int a;
        int b;
        const int *p1 = &a;
        a = 300;     //OK,仍然可以通过原来的声明修改值,
        b = 100;
        //*p1 = 60; //Error,*p1是const int的,不可修改,即常量指针不可修改其指>向地址
        printf("p1=%p\n",p1);
        printf("p1=%d\n",*p1);
        p1 = &b;     //OK,指针还可以指向别处,因为指针只是个变量,可以随意指向;
        printf("p1=%p\n",p1);
        printf("p1=%d\n",*p1);
        return 0;
}

运行结果:

p1=0x7fffb29b22d8
p1=300
p1=0x7fffb29b22dc
p1=100

——-指针常量——-

#include <stdio.h>
int main()
{ 
   
	int a;
	int b; 
	int*  const p2 = &a;
	a = 900;     //OK,仍然可以通过原来的声明修改值,
	printf("p2的地址=%p\n",p2);
	printf("p2的值=%d\n",*p2);
	*p2 = 100;   //OK,指针是常量,指向的地址不可以变化,但是指向的地址所对应的内容可以变化
	printf("p2的地址=%p\n",p2);
	printf("p2的值=%d\n",*p2);
// p2 = &b; //Error,因为p2是const 指针,因此不能改变p2指向的内容 
	return 0;
} 

运行结果:

p2的地址=0060FF08
p2的值=900
p2的地址=0060FF08
p2的值=100

大结:两者的重要区别,可不可以通过修改地址来改别常量

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/184836.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 算法时间复杂度分析(一)

    算法时间复杂度分析(一)金庸武侠中描述一种武功招式的时候,经常会用到“快、准、狠”这3个字眼。同样,在计算机中我们衡量一种算法的执行效率的时候也会考量3个方面:“快、省、稳”。具体点来讲就是我们在实现某一种算法的时候,最终目的就是要求计算机(CPU)在最短的时间内,用最少的内存稳定的输出正确的结果。这一章节主要来理解“快”,至于“省”和“稳”,我会在后续章节进行讲解。那如何来判断某一段代码运行的是否足够快呢…

  • python常见的数据类型有哪些?

    python常见的数据类型有哪些?变量用来存储数据,那么大家有没有想过,我们应该让变量占用多大空间,保存什么样的数据呢?在讲解变量的类型之前,我们先来看一个生活中的例子,例如,我们要运送一台电脑,大卡车和小轿车都可以完成,但是,如果使用大卡车运送一台电脑,显然有点小题大做,浪费了大卡车的空间,如图1所示。图一:卡车和轿车运输一台电脑同理,如果使用变量存储数据时,为了更充分利用内存空间,我们可以为变量指定不同的数据类型。Python中常见的数据类型如图2所示图二:Python变量数据类型图二中罗列了Python中常见的数据类型,下

  • yui java 右键_给YUI Compressor添加右键命令,完成快捷压缩[通俗易懂]

    yui java 右键_给YUI Compressor添加右键命令,完成快捷压缩[通俗易懂]YUICompressor默认不带右键安装功能YUICompressor非常好用,特别是JS的混淆是众多JSCoding的最爱。可惜官网提供的版本都不具备右键功能,每次压缩都要cmd输入一些命令实在是繁琐,本文就介绍如何给YUICompressor添加右键命令,方便使用。网上已有一些网友写好的安装包,但对应的版本太低,目前最新最多人使用的还是2.4.7版本,而这一版本的带右键功能目前没有在…

  • MySQL-深入分析MySQL ERROR 1045出现的原因

    MySQL-深入分析MySQL ERROR 1045出现的原因1

  • 服务器搭建个人网站(阿里云服务器)

    服务器搭建个人网站(阿里云服务器)服务器搭建个人网站一丶购买服务器这里我选的是阿里云服务器,进入阿里云官网https://www.aliyun.com阿里云提供了几种服务器,云服务器ESC、轻量应用服务器,ESC更好一点儿,我选了轻量级应用服务器。购买好了之后,在阿里云网站主页→控制台→轻量应用服务器。找到运行中的实例点进去就好了。服务器器就购买好了二、配置服务器环境首先你要知道怎么把你本机的文件放到你的

  • ip addr命令详解_ip命令详解

    ip addr命令详解_ip命令详解ipaddr命令的作用是在Linux系统上查询ip地址。命令效果如下:解析:lo(loopback)环回接口,常被分配到127.0.0.1,用于本机通信,经过内核处理后直接返回,不会在任何网络中出现。net_deviceflags:LOOPBACK,UP,表示网卡处于启动的状态LOWER_UP物理连接正常,就是网卡已经上电(物理指的是物理层)BROADCAST表示这个网卡有广播地址,可以发送广播包MULTICAST表示网卡可以发送多播包MTU1500是指什么意思呢?是哪一层的

发表回复

您的电子邮箱地址不会被公开。

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