常量指针、指针常量及常量指针常量

目录

[1. 常量指针(Pointer to Constant)](#1. 常量指针(Pointer to Constant))

[2. 指针常量(Constant Pointer)](#2. 指针常量(Constant Pointer))

[3. 常量指针常量(Constant Pointer to Constant)](#3. 常量指针常量(Constant Pointer to Constant))


  • 常量指针:指针指向的值不能改,但指针本身可以指向其他地址。
  • 指针常量:指针本身不能改,但可以修改指向的值。
  • 常量指针常量:指针和指针指向的值都不能改。

常量指针(pointer to constant)和指针常量(constant pointer)在C/C++中是两个不同的概念,它们的区别主要在于指针和指向的值哪个是常量。下面详细讲解它们的区别并举例说明。

1. 常量指针(Pointer to Constant)

定义: 常量指针是指向常量的指针,也就是说,通过这个指针无法修改它所指向的值。

语法: const data_type *pointer_name;data_type const *pointer_name;

特性:

  • 指向的值是常量,不能通过指针修改它所指向的值。
  • 指针本身可以指向其他地址。

示例代码:

复制代码
#include <stdio.h>

int main() {
    int x = 10;
    int y = 20;
    const int *p = &x; // p是一个常量指针,指向x

    printf("x = %d\n", *p);

    // *p = 15; // 错误:不能通过常量指针修改指向的值

    p = &y; // 可以改变指针p的指向
    printf("y = %d\n", *p);

    return 0;
}

解释:

  • const int *p = &x; 表示 p 是一个指向 int 类型常量的指针,通过 p 不能修改 x 的值。
  • p = &y; 是合法的操作,可以改变 p 的指向。

2. 指针常量(Constant Pointer)

定义: 指针常量是一个常量指针,意思是指针本身是常量,即指针的地址不能修改,但可以通过它来修改指针所指向的值。

语法: data_type *const pointer_name;

特性:

  • 指针本身是常量,不能指向其他地址。
  • 可以通过指针修改它所指向的值。

示例代码:

复制代码
#include <stdio.h>

int main() {
    int x = 10;
    int y = 20;
    int *const p = &x; // p是一个指针常量,指向x

    printf("x = %d\n", *p);

    *p = 15; // 可以通过指针常量修改指向的值
    printf("Modified x = %d\n", *p);

    // p = &y; // 错误:不能改变指针的指向

    return 0;
}

解释:

  • int *const p = &x; 表示 p 是一个指针常量,不能改变指针 p 的指向。
  • 可以通过 *p = 15; 修改 x 的值。

3. 常量指针常量(Constant Pointer to Constant)

定义: 既是指向常量的指针,又是常量指针,既不能改变指针指向的地址,也不能修改指针指向的值。

语法: const data_type *const pointer_name;

示例代码:

复制代码
#include <stdio.h>

int main() {
    int x = 10;
    const int *const p = &x; // p既是指向常量的指针,又是常量指针

    printf("x = %d\n", *p);

    // *p = 15; // 错误:不能修改指向的值
    // p = &x;  // 错误:不能改变指针的指向

    return 0;
}
相关推荐
君君思密达2 小时前
LeetCode Hot 100 题目详解-滑动窗口
算法·leetcode·职场和发展
GreenTea10 小时前
深度解读 Anthropic 多智能体报告:更强的模型 ≠ 更好的协调
前端·后端·算法
fqq311 小时前
力扣刷题前置Java语法
算法·leetcode·职场和发展
2501_9065651213 小时前
数学之美探究
算法
oier_Asad.Chen13 小时前
【洛谷题解/AcWing题解/OI学习笔记】洛谷P2868【USACO07DEC】Sightseeing Cows G(01分数规划求最大比率)
算法·图论·spfa·二分·负环
leisoo809715 小时前
财报数据怎么排雷本地化Python构建财务异常预警系统
人工智能·python·算法
luj_176817 小时前
塔防牌:策略与卡牌的智慧碰撞
服务器·c语言·开发语言·经验分享·算法
郝学胜-神的一滴18 小时前
干货版《算法导论》17:二叉树核心原理、遍历逻辑与高阶实操全解
数据结构·c++·python·算法·计算机·编程
爱编程的小新☆18 小时前
【LeetCode】从递归到 Flood Fill:5 道题吃透 DFS 的选择、回溯与标记
java·算法·leetcode·深度优先·回溯·flood fill
Water_Sunzhipeng18 小时前
2024牛客暑期多校训练营1
算法