【C/C++】1.函数传入指针加const的作用及用法区别

在 C/C++ 中,const 用于定义常量,防止数据被意外修改。

 

什么时候需要为指针加上const:

  1. 保证数据安全:如果函数不需要修改指针指向的数据,用 const 可以防止意外修改,确保数据安全。

             void func(const int *ptr){ // 只能读取数据,无法修改 }
  2. 提升代码可读性:使用 const 明确表示数据不可修改,使代码意图更清晰,便于维护。

  3. 允许传递常量数据:如果指针参数为 const,可以传递常量或非常量数据,提高了函数的适用性。

              const int val = 10;
              void display(const int *ptr); // 可以传入常量 val 的地址 display(&val);
  4. 防止指针误用:若希望指针本身不变,可以加 const(如 int *const ptr),避免在函数内部修改指针指向的地址。

 

★  假设我们有一个函数,传入的是一个指针 int *ptr,以下是加上 const 的几种不同情况:

       1. const int *ptrint const *ptr

  • 含义:指针 ptr 所指向的内容是常量,不能通过 ptr 来修改这个内容,但指针 ptr 本身可以指向其他地址。

  • 示例

    void func(const int *ptr) {
      // *ptr = 10; // 错误:不能通过 ptr 修改指向的数据
      int x = 20;
      ptr = &x; // 合法:可以让 ptr 指向不同的地址
    }

      2. int *const ptr

  • 含义:指针 ptr 本身是常量,因此不能指向其他地址,但指向的内容可以修改。

  • 示例

    void func(int *const ptr) {
      *ptr = 10; // 合法:可以通过 ptr 修改指向的数据
      int x = 20;
      // ptr = &x; // 错误:不能更改 ptr 本身指向的地址
    }

      3. const int *const ptrint const *const ptr

  • 含义:指针 ptr 本身和指向的内容都是常量,既不能修改 ptr 所指向的内容,也不能让 ptr 指向其他地址。

  • 示例

    void func(const int *const ptr) {
      // *ptr = 10; // 错误:不能通过 ptr 修改指向的数据
      int x = 20;
      // ptr = &x; // 错误:不能更改 ptr 本身指向的地址
    }

      总结

  • const int *ptrint const *ptr:指针指向的内容是常量,内容不可修改,但指针本身可以指向其他地址。
  • int *const ptr:指针本身是常量,指向的内容可以修改,但指针不能指向其他地址。
  • const int *const ptr:指针和指向的内容都是常量,既不能修改内容,也不能修改指针的地址。
posted @ 2024-10-27 23:19  朝槿yys  阅读(45)  评论(0编辑  收藏  举报