我有以下代码
int main(int argc, char **argv, char **envp)
{
const char *usuario= NULL;
while(*envp)
{
char *str = *envp++;
//if(strcmp(str,"USERNAME")==0)
if(str[0] == 'U' && str[1] == 'S' && str[2]=='E' && str[3]=='R' && str[4] == 'N')
{
usuario = str;
break;
}
}
if(usuario != NULL)
{
printf("Hola, bienvenido al programa %s",usuario);
}
return 0;
}
我的问题是,它为什么有效?那" usuario"变量定义为NULL是CONST类型。它假设这些变量不能在整个程序中被修改,但随后它被usuario = str;
答案 0 :(得分:4)
usuario
不是常数。
提示:指针声明必须从右到左阅读
尝试阅读
const char *usuario= NULL;
从右到左,在本例中为usuario is a pointer to constant char
要将usuario
声明为常量,请执行
const char * const usuario= NULL;
上面的代码段会使usuario
保持不变。
尝试从右到左阅读上面的代码段,在本例中为usuario is a constant pointer to a constant char