在C中,我是否更喜欢常量而不是定义?我最近阅读了很多代码,所有的例子都大量使用了定义.
在阅读用C++编写的教程和代码时,我经常偶然发现const关键字.
我看到它使用如下:
const int x = 5;
Run Code Online (Sandbox Code Playgroud)
我知道这意味着它x是一个常量变量,可能存储在只读内存中.
但究竟是什么
void myfunc( const char x );
Run Code Online (Sandbox Code Playgroud)
和
int myfunc( ) const;
Run Code Online (Sandbox Code Playgroud)
?
我知道可以使用#define宏声明常量.有了这个,将整数,浮点或字符文字定义为常量会很简单.
但是,对于更复杂的数据结构,例如数组或结构,例如:
typedef struct {
int name;
char* phone_number;
} person;
Run Code Online (Sandbox Code Playgroud)
我希望能够初始化一次,然后使其成为一个不可编辑的结构.
在面向对象的语言中,存在final关键字,可以轻松完成此任务,但在C中没有这样的事情.我想到的一个解决方法是使用setjmp和longjmp模拟try-catch括号并在检测到更改时执行回滚.您需要将备份存储在文件/内存对象中,如果您想要保护许多此类对象以防止意外更改,则可能会产生一些混乱.