C语言 指针常量和常量指针

1、指针常量

#include<stdio.h> 
int main()
{
    double rates[5] = {88.99, 100.12, 59.45, 183.11, 340.5};

	double *const prt = rates;
	prt = &rates[2] ; //系统报错,不允许
    return 0;
}

#include<stdio.h> 
int main()
{
    double rates[5] = {88.99, 100.12, 59.45, 183.11, 340.5};

	double *const prt = rates;
	*prt = 1.2222 ; //允许
	printf("rates[0] = %f\n",rates[0]);
    return 0;
}

*运算符是一个指针运算符,prt是一个指针变量,前面加了const,说明prt这个指针指向的地址是一个常量,我们不能修改其指向的地址值,只能修改其地址上面的数值。

2、常量指针

#include<stdio.h> 
int main()
{
    double rates[5] = {88.99, 100.12, 59.45, 183.11, 340.5};

	double const (*prt)= rates;
	*prt = 333.222 ; //不允许
	printf("rates[3] = %f\n",*prt);
    return 0;
}

#include<stdio.h> 
int main()
{
    double rates[5] = {88.99, 100.12, 59.45, 183.11, 340.5};

	double const (*prt)= rates;
	prt = &rates[3] ; //允许
	printf("rates[3] = %f\n",*prt);
    return 0;
}

const *prt我们可以这么看,const定义的是一个常量参数,所以说*prt指向的地址上面的数值要是常量,不允许被改变,而prt是一个指针变量,则我们可以通过修改地址指其指向另一个地址。

3、指向常量的指针常量

#include<stdio.h> 
int main()
{
    double rates[5] = {88.99, 100.12, 59.45, 183.11, 340.5};

	const double *const prt= rates;
	prt = &rates[3] ; //不允许
	printf("rates[3] = %f\n",*prt);
    return 0;
}

 如果在指针常量的前面再加上const,如上所示,表明即不允许prt修改地址的值,也不允许修改地址上面的值。

所以说指针常量是不允许修改指向的地址,允许修改地址上面的值,常量指针是不允许修改地址上面的值,而允许修改指向的地址,第三种指向常量的指针常量即不允许修改地址的值,也不允许修改地址上面的值。

 

这是C primer plus 第六版本 pdf ,大家有需要的可以去下载,https://xbp.pub/i/ZZ0fb1cc4foMq 还有perl,python,数据分析等一些技能书籍,大家有需要的可以去看看  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值