C语言_常量指针与指针常量

前言

我们经常会看到 const 和 指针 自由组合, const 在先 在后, 所产生的效果是不一样的. 经常会混淆概念, 在这里我们将他详细的区分一下, 什么是常量指针以及指针常量, 他们具体有什么特点, 让我们一起随着代码去验证!

读法: const (常量) 和 * (指针) 谁在前, 先读谁

常量指针

常量指针: 就是指向常量的指针, 指针指向的内容不能被改变, 但是地址可以被改变;
注意: 这里的内容不能被改变是不能被直接改变, 可以通过指向地址的改变改变内容
声明格式: 特别注意, 有俩种声明形式均正确:
const 类型 *指针常量名; 如: const int *p1;
类型 const *指针常量名; 如: int const *p1;

指针常量

指针常量: 就是指针的本身是常量, 指向的地址不可被改变, 内容可以被改变
这里我们会写实例来进行验证:
声明格式:
指针类型 * const 指针名; 如: int * const p2;

指向常量的常量指针

指向常量的常量指针, 指向的地址和指向的内容均不可被改变
声明格式:
const 指针类型* const 指针名; 如: const int* const p;

验证源码

/*********************************************************************************
 *      Copyright:  (C) 2021 guanyunpeng
 *                  All rights reserved.
 *
 *       Filename:  const_and_pointer.c
 *    Description:  This file 
 *                 
 *        Version:  1.0.0(2021年08月18日)
 *         Author:  guanyunpeng <364521112@qq.com>
 *      ChangeLog:  1, Release initial version on "2021年08月18日 15时32分31秒"
 *                 
 ********************************************************************************/

#include <stdio.h>

int main (int argc, char **argv)
{
    int         number1 = 3;
    int         number2 = 5;
    const int  *p1 = &number1;      // 常量指针
    int* const  p2 = &number1;      // 指针常量
    const int* const p3 = &number1; // 指向常量的常量指针

    p1 = &number2;
    p2 = &number2;
    p3 = &number2;

    *p1 = 4;
    *p2 = 4;
    *p3 = 4;

    return 0;
} 

运行结果

在这里插入图片描述

由此可见, 常量指针内容是不可以被改变的; 指针常量地址是不可以被改变的; 指向常量的常量指针, 内容和地址均不可被改变

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值