C语言中的const关键字如何改写为一个长尾?

2026-04-19 03:220阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1149个文字,预计阅读时间需要5分钟。

C语言中的const关键字如何改写为一个长尾?

在抽象的最高层次上,const 具有两项功能:一是保护你的数据(类似 private),二是向编译器暗示,这些标记为 const 的对象适合作为程序的数据段。换句话说,const 属性属于只读数据(ROM-able)。

在抽象的最高层次上,const做两件事:

* 一种保护你自己的方式(类似于private)

* 对编译器的一种指示,表明标记为const的对象适合于程序的数据段。换句话说,属于只读数据(ROM-able)。

可以通过例子来看下const的应用。第一个例子中,使用const覆盖了整个例子:

void fun(int i, std::string const & str) { i = 0; //ok. str = ""; //error! int const n = 42; n = 2; //error! }

第二种情况只适用于静态初始化的名称空间-作用域变量(又称全局变量):

int const pi = 3; //ROM-able std::vector<int> const ivec = {/* ... */}; //Not ROM-able, might allocate.

对声明为const的变量的任何写操作都被显示为未定义行为。这支持const全局变量在ROM中的位置。

如果一个变量定义在ROM中,对它的写操作很可能会使程序崩溃,这取决于平台。如果一个变量不在ROM中,对它的写操作只会改变它的值。这两种情况的结合就是为什么对const变量执行写操作的行为是未定义行为而不是错误。

阅读全文

本文共计1149个文字,预计阅读时间需要5分钟。

C语言中的const关键字如何改写为一个长尾?

在抽象的最高层次上,const 具有两项功能:一是保护你的数据(类似 private),二是向编译器暗示,这些标记为 const 的对象适合作为程序的数据段。换句话说,const 属性属于只读数据(ROM-able)。

在抽象的最高层次上,const做两件事:

* 一种保护你自己的方式(类似于private)

* 对编译器的一种指示,表明标记为const的对象适合于程序的数据段。换句话说,属于只读数据(ROM-able)。

可以通过例子来看下const的应用。第一个例子中,使用const覆盖了整个例子:

void fun(int i, std::string const & str) { i = 0; //ok. str = ""; //error! int const n = 42; n = 2; //error! }

第二种情况只适用于静态初始化的名称空间-作用域变量(又称全局变量):

int const pi = 3; //ROM-able std::vector<int> const ivec = {/* ... */}; //Not ROM-able, might allocate.

对声明为const的变量的任何写操作都被显示为未定义行为。这支持const全局变量在ROM中的位置。

如果一个变量定义在ROM中,对它的写操作很可能会使程序崩溃,这取决于平台。如果一个变量不在ROM中,对它的写操作只会改变它的值。这两种情况的结合就是为什么对const变量执行写操作的行为是未定义行为而不是错误。

阅读全文