C语言指针常量和常量指针
在 C/C++ 中,const
关键字用于定义常量。在涉及指针时,const
的使用可以带来不同的含义。下面是几种常见的指针与 const
的组合方式及其含义:
-
常量指针(Pointer to Constant)
const int* ptr;
- 含义:指针
ptr
指向一个const int
类型的值。这意味着你不能通过ptr
修改它所指向的值,但你可以修改指针本身,使其指向不同的const int
对象。
int a = 5; const int* ptr = &a; // *ptr = 10; // 错误:不能修改 *ptr 的值 int b = 10; ptr = &b; // 合法:可以改变指针的指向
- 含义:指针
-
常量指针(Constant Pointer)
int* const ptr;
- 含义:指针
ptr
是常量的,这意味着指针ptr
一旦初始化后,其指向的内存地址不能更改。但是,你可以通过ptr
修改其指向的值。
int a = 5; int* const ptr = &a; *ptr = 10; // 合法:可以修改 *ptr 的值 // ptr = &b; // 错误:不能改变 ptr 的指向
- 含义:指针
-
常量指针到常量(Constant Pointer to Constant)
const int* const ptr;
- 含义:指针
ptr
本身和它所指向的值都是常量的。这意味着你不能通过ptr
修改它所指向的值,也不能改变ptr
指向的地址。
int a = 5; const int* const ptr = &a; // *ptr = 10; // 错误:不能修改 *ptr 的值 // ptr = &b; // 错误:不能改变 ptr 的指向
- 含义:指针
总结一下,const
关键字在指针声明中的位置决定了 const
的作用范围:
const
放在*
之前,表示指向的值是常量。const
放在指针变量的声明部分,表示指针本身是常量。
希望这些解释对你理解 const
与指针的关系有所帮助!如果有更多问题或需要进一步的解释,请随时提问。