指针常量和常量指针

理解

指针* 和 const 谁在前先读谁 ; * 象征着地址,const象征着内容; 谁在前面谁就不允许改变。例如:
int const *p1 = &b; //const 在前,定义为常量指针
int *const p2 = &c; // *在前,定义为指针常量

指针常量

常量指针是指指向常量的指针,顾名思义,就是指针指向的是常量,即,它不能指向变量,它指向的内容不能被改变,不能通过指针来修改它指向的内容,但是指针自身不是常量,它自身的值可以改变,从而指向另一个常量。

常量指针

指针常量 是指指针本身是常量。它指向的地址是不可改变的,但地址里的内容可以通过指针改变。它指向的地址将伴其一生,直到生命周期结束。有一点需要注意的是,指针常量在定义时必须同时赋初值。

Demo

#include <stdio.h>
// 指针常量:本质上是就是“指针是个常量”
int main(void)
{
	int a = 5;
	int b = 6;
	int * const p = &a;  // p的不可以发生改变,但是*p可以改变
	printf("p = %p, *p = %d \r\n", p, *p);
	*p = b;
	printf("p = %p, *p = %d \r\n", p, *p);
	system("pause");
	return 1;
}

运行结果:
在这里插入图片描述

#include <stdio.h>
// 常量指针:本质上是就是指针,指针的指向是个常量
int main(void)
{
	int a = 5;
	int b = 6;
	int const * p = &a;  // *p的不可以发生改变,但是p可以改变
	printf("p = %p, *p = %d \r\n", p, *p);
	p = &b;
	printf("p = %p, *p = %d \r\n", p, *p);
	system("pause");
	return 1;
}

运行结果:
在这里插入图片描述

常用场合

  1. 传指针时,通常作为形参使用,例如,
static void fds_evt_handler(int const * p_evt)

我们将一个指针做实参,在函数体 fds_evt_handler 内,不希望改变过变量的值,就可以在形参中使用常量指针

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值