在c语言的运行时使变量为常量还是只读?

在c语言的运行时使变量为常量还是只读?,c,C,在c程序中,如何在运行时将普通整数或字符变量设置为只读 假设我有一个变量 inti=10 在检查一个标志后,我需要将其转换为只读,之后应该没有人能够更改它 if(TRUE==checkFlag) { //Make i=20 and readonly } 这是不可能的 变量可以应用const限定符,以防止代码修改该变量。但是,这仅适用于编译时。在运行时,该语言没有内置任何功能来执行此操作 您可以做的是将此变量放入一个外部模块中,并使其仅可通过getter/setter函数访问。然后,您可以

在c程序中,如何在运行时将普通整数或字符变量设置为只读

假设我有一个变量
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且已初始化但为只读。