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

打印 上一主题 下一主题

主题 864|帖子 864|积分 2592

在 C/C++ 中,const 用于界说常量,防止数据被意外修改。
 
★ 什么时候必要为指针加上const:

  • 包管数据安全:如果函数不必要修改指针指向的数据,用 const 可以防止意外修改,确保数据安全。
             void func(const int *ptr){ // 只能读取数据,无法修改 }
  • 提升代码可读性:使用 const 明确表现数据不可修改,使代码意图更清晰,便于维护。
  • 答应通报常量数据:如果指针参数为 const,可以通报常量或非常量数据,进步了函数的适用性。
              const int val = 10;           void display(const int *ptr); // 可以传入常量 val 的地点 display(&val);
  • 防止指针误用:若希望指针自己不变,可以加 const(如 int *const ptr),制止在函数内部修改指针指向的地点。
 
★  假设我们有一个函数,传入的是一个指针 int *ptr,以下是加上 const 的几种差别情况:
       1. const int *ptr 或 int 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 ptr 或 int const *const ptr


  • 含义:指针 ptr 自己和指向的内容都是常量,既不能修改 ptr 所指向的内容,也不能让 ptr 指向其他地点。
  • 示例
    void func(const int *const ptr) {   // *ptr = 10; // 错误:不能通过 ptr 修改指向的数据  int x = 20;   // ptr = &x; // 错误:不能更改 ptr 自己指向的地点 }
      总结


  • const int *ptr 或 int const *ptr:指针指向的内容是常量,内容不可修改,但指针自己可以指向其他地点。
  • int *const ptr:指针自己是常量,指向的内容可以修改,但指针不能指向其他地点。
  • const int *const ptr:指针和指向的内容都是常量,既不能修改内容,也不能修改指针的地点。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

兜兜零元

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表