关于const的恩怨情仇

关于关键字const的用法是一个老生常谈的面试题了,并且项目开发中也会用到,const结合指针更是一个有趣的话题

	#include<stdio.h>

	int main(void)
	{
		const char *ps1 = NULL;  
		char *pc = "Hi xiaofang";
		char buf[] = "helloworld";
		pc = buf;
		char *const ps2 = pc;
	
		ps1 = buf;
		//ps2 = buf; // TODO ,What is the result?
		printf("%s:%s:%s\n",ps1,ps2,pc);
	
		return 0;
	}

结果是ps2指针是read-only。
常量:
ANSI C 允许声明常量,常量和变量是一模一样,只是常量的值不能修改,可以使用const关键字来声明常量,如:

	int const a;
	const int a;

这样两条语句都是把a声明为一个整数,a的值都不能被修改。所以在coding中可以选择一个比较容易理解和明白的使用,因为a的值不能被修改,所以a的赋值有两中方法:
首先,可以在声明时对a进行初始化,如:

	int const a = 15;

其次,在函数中声明为const的形参在函数被调用时会得到实参的值。
前面举了一个关于指针的例子,涉及指针时有两样东西有可能成为常量-----常量和它所指向的实体:

int *pi;

pi是一个普通的指向整型的指针,再看下面

int const *pci;

pci是一个指向整型常量的指针,可以修改指针的值,但是不能修改它所指向的值,
再来一个看看:

int  *const cpi;

这时cpi为一个指向整型的常量指针,此时指针是常量,它的值无法修改,
但你可以修改它所指向的整型值。继续:

int const * const cpci;

cpci是一个指向整型常量的常量指针,指针的值不可以修改,
指针指向的值不可以修改。

20220530
const 修饰指针

  1. const 常量
  2. const 修饰指针 — 常量指针
  3. const 修饰常量 — 指针常量
  4. const 即修饰指针,又修饰常量

常量指针
在这里插入图片描述
在这里插入图片描述
指针常量

在这里插入图片描述const 修饰指针,修饰常量

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值