C语言常量指针的概念和用法(附带示例)

C语言常量指针的概念和用法(附带示例)

C语言中的常量指针是一个比较常见的概念,这意味着,指针指向的内容(也就是指针所指向的内存中的值)是常量,该内容在初始化以后不能再被修改。但是,指针本身不是常量,它的指向可以被随时被修改。

要理解常量指针,我们首先需要明确指针的两个重要属性:指针本身的值(即它所存储的地址)和指针所指向的值。常量指针的“常量”,是针对它指向的值而言的,而不是针对它本身的值。这意味着我们可以改变常量指针本身的指向,但是却不能通过常量指针修改它所指向的值。

常量指针的声明格式有两种:

const 数据类型 *指针变量名;

数据类型 const *指针变量名;

在这个声明中,const 关键字可以位于数据类型之前,可以位于数据类型之后,但是必须要位于星号*之前,这样才能保证 const 修饰的是指针变量所指向的值。如果把 const 放在 * 后面,也就是写作:

数据类型 * const 指针变量名;

那么就变成了指针常量,此时 const 用来修饰指针变量本身。这意味着,指针变量本身是常量,它的指向在初始化以后就不能被修改了;然而,指针变量所指向的内容却不是常量,内容可以随时被修改。

如果你想深入了解指针常量和常量指针的区别,请转到:C语言指针常量和常量指针的区别(附带示例)

总之,const 离谁近就用来修饰谁。

让我们通过一个具体的例子来理解常量指针的概念和用法:

#include

int main() {

int x = 10;

const int *ptr = &x;

printf("x 的值: %d\n", x);

printf("ptr 指向的值: %d\n", *ptr);

// 下面这行代码会导致编译错误

// *ptr = 20;

x = 20; // 这是允许的

printf("修改后 x 的值: %d\n", x);

printf("修改后 ptr 指向的值: %d\n", *ptr);

return 0;

}

在这个例子中,我们声明了一个整型变量 x 和一个指向常量整型的指针 ptr;ptr 被初始化为指向 x。虽然 ptr 指向的是 x,但是由于 ptr 是常量指针,我们不能通过 ptr 来修改 x 的值。如果尝试通过 ptr 修改 x 的值(如注释掉的那行代码),编译器会报错。

然而,需要注意的是,x 本身并不是常量。我们仍然可以直接修改 x 的值,这种修改是允许的。当我们修改 x 的值后,通过 ptr 读取的值也会随之改变,因为 ptr 仍然指向 x。

输出结果:

x 的值: 10

ptr 指向的值: 10

修改后 x 的值: 20

修改后 ptr 指向的值: 20

常量指针的一个重要应用是在函数参数中。当我们希望函数可以访问某个变量的值,但不希望函数修改这个变量时,就可以使用常量指针作为参数。这样可以有效地保护数据,防止意外的修改。例如:

void printValue(const int *ptr) {

printf("值: %d\n", *ptr);

// *ptr = 100; // 这行代码会导致编译错误

}

在这个函数中,参数 ptr 是一个指向常量整型的指针,函数可以读取 ptr 指向的值,但不能修改它。这种设计可以增加函数的安全性和可靠性。

总的来说,常量指针本身的指向可以被修改,但是它所指向的内容不能被修改,这使得我们可以更精确地控制数据的访问和修改权限,从而编写出更安全、更可靠的代码。

相关内容

首批共享电单车来了!收费标准、租借方式→
365上怎么买比分

首批共享电单车来了!收费标准、租借方式→

⌛ 10-05 👁️ 8295
植物大战僵尸怎么快速刷钱 植物大战僵尸刷钱技巧详解
365名品汇推荐码多少

植物大战僵尸怎么快速刷钱 植物大战僵尸刷钱技巧详解

⌛ 12-30 👁️ 5413
诗人陈超之死:嵌于两个时代转换间的注脚(2)
bst365大陆投注

诗人陈超之死:嵌于两个时代转换间的注脚(2)

⌛ 08-23 👁️ 2255
KO才算赢!一龙播求“终极之战”10月6日广州打响
bst365大陆投注

KO才算赢!一龙播求“终极之战”10月6日广州打响

⌛ 09-26 👁️ 3255
鲫鱼吃什么食物?鲫鱼常见种类有哪些
bst365大陆投注

鲫鱼吃什么食物?鲫鱼常见种类有哪些

⌛ 01-11 👁️ 372
在 iPad 上更改高级相机设置
365名品汇推荐码多少

在 iPad 上更改高级相机设置

⌛ 12-30 👁️ 4263
利用Python和群晖Docker实现京东自动领京豆脚本部署
365名品汇推荐码多少

利用Python和群晖Docker实现京东自动领京豆脚本部署

⌛ 09-19 👁️ 3792
睫的成语
365上怎么买比分

睫的成语

⌛ 01-06 👁️ 7660
探问雪落的奥秘
365上怎么买比分

探问雪落的奥秘

⌛ 01-13 👁️ 6616