在c语言的运行时使变量为常量还是只读?
在c程序中,如何在运行时将普通整数或字符变量设置为只读 假设我有一个变量在c语言的运行时使变量为常量还是只读?,c,C,在c程序中,如何在运行时将普通整数或字符变量设置为只读 假设我有一个变量 inti=10 在检查一个标志后,我需要将其转换为只读,之后应该没有人能够更改它 if(TRUE==checkFlag) { //Make i=20 and readonly } 这是不可能的 变量可以应用const限定符,以防止代码修改该变量。但是,这仅适用于编译时。在运行时,该语言没有内置任何功能来执行此操作 您可以做的是将此变量放入一个外部模块中,并使其仅可通过getter/setter函数访问。然后,您可以
inti=10代码>
在检查一个标志后,我需要将其转换为只读,之后应该没有人能够更改它
if(TRUE==checkFlag)
{
//Make i=20 and readonly
}
这是不可能的
变量可以应用const
限定符,以防止代码修改该变量。但是,这仅适用于编译时。在运行时,该语言没有内置任何功能来执行此操作
您可以做的是将此变量放入一个外部模块中,并使其仅可通过getter/setter函数访问。然后,您可以在模块内部设置一个标志,以防止setter函数进行更改
例如:
ro_变量h:
int getx(void);
int setx(int val);
void flag(void);
ro_变量c:
static int x;
static int ro = 0;
int getx(void)
{
return x;
}
int setx(int val)
{
if (ro) {
return 0;
} else {
x = val;
return 1;
}
}
void flag(void)
{
ro = 1;
}
这是不可能的
变量可以应用const
限定符,以防止代码修改该变量。但是,这仅适用于编译时。在运行时,该语言没有内置任何功能来执行此操作
您可以做的是将此变量放入一个外部模块中,并使其仅可通过getter/setter函数访问。然后,您可以在模块内部设置一个标志,以防止setter函数进行更改
例如:
ro_变量h:
int getx(void);
int setx(int val);
void flag(void);
ro_变量c:
static int x;
static int ro = 0;
int getx(void)
{
return x;
}
int setx(int val)
{
if (ro) {
return 0;
} else {
x = val;
return 1;
}
}
void flag(void)
{
ro = 1;
}
这是不可能的。你可以使用函数来达到这个效果。在C标准中没有“只读”这样的东西。你可以使用constinti=10代码>且已初始化但为只读。这是不可能的。你可以使用函数来达到这个效果。在C标准中没有“只读”这样的东西。你可以使用constinti=10代码>且已初始化但为只读。