C语言进阶3-指针第二部分

  1. 在这里将会讨论const修饰指针的常见三种形式, const关键字在C语言中修饰变量,表示这个变量是常量,指针变量也是变量
    1)第一种:int const *p等价于 const int *p 此时p本身不是const的,但是p指向的变量是const类型的
    2)第二种:int * const p; 此时表示 p本身是const ,但是p指向的变量不是const类型的
    2)第三种: const int * const p ;此时p本身是const类型的,p指向的变量也是const类型的
#include <stdio.h>
int main(void)
{
	//const int* p1;
	//int const* p2;
	int* const p3;
	int a;
	const  int * const p4;

	//下面开始对上面定义的开始赋值,看下报错情况,经过编译,发现p1和p2都是const类型,不能被继续赋值

	//*p1 = 3;  //此时p1本身就是一个const 类型,这样写回报错:error C2166: 左值指定 const 对象
	//*p2 = 5;  //同样报错:error C2166: 左值指定 const 对象


	//*p3 = 9;
	*p4 = 5;   //报错
}

2,const 修饰的变量也是有办法可以改的
此时
上图的const类型是没有办法修改的,但是请看下图
在这里插入图片描述
const类型的变量就已经更改成功了。
3,今天遇到的问题,也提出来给大家看看

int* const p3=9; //对于常指针,定义的时候就应该初始化一下,
//因为如果不初始化,局部变量会分部在栈上,会随机给个值

//如果我这样写,就是错的!
int* const p3; //此时就是错的,因为如果不初始化,局部变量会分部在栈上,会随机给个值
p3=9; //此时再次赋值,相当于把指针指向的变量的值改了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值