关于关键字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 修饰指针
- const 常量
- const 修饰指针 — 常量指针
- const 修饰常量 — 指针常量
- const 即修饰指针,又修饰常量
常量指针
指针常量
const 修饰指针,修饰常量