我读一段代码,其中存在初始化静态字符常量* somevar
#include ...
static char const *program_name;
...
int main(int argc, char** argv){
program_name = argv[0];
...
}
我想知道如何能的主要功能将值分配给一个const
变量。任何帮助,将不胜感激!
我读一段代码,其中存在初始化静态字符常量* somevar
#include ...
static char const *program_name;
...
int main(int argc, char** argv){
program_name = argv[0];
...
}
我想知道如何能的主要功能将值分配给一个const
变量。任何帮助,将不胜感激!
声明:
static char const *program_name;
说program_name
是一个(变量)指针恒定字符。指针可以改变(因此它可以在main()
被分配),但串指向不能通过该指针被改变。
比较和对比用:
static char * const unalterable_pointer = "Hedwig";
这是一个常数指针变量数据;指针不能改变,但如果该字符串时,初始化为指向不是一个文字,字符串可以修改:
static char owls[] = "Pigwidgeon";
static char * const owl_name = owls;
strcpy(owl_name, "Hedwig");
/* owl_name = "Hermes"; */ /* Not allowed */
而且比较和对比搭配:
static char const * const fixed_pointer_to_fixed_data = "Hermes";
这是一个常数数据的常量指针。
感谢其他两个例子!然后我想,'* program_name'是'const'如果在原来的方式声明,即'静态字符常量*程序名;'。这是你的意思吗? – AoZ
正确。你不能写'*程序名=“A”;''因为点program_name'恒定的数据;你不能通过这个指针修改数据(虽然其他指针相同的数据或许可以修改它 - 在这种情况下,你可以写'* argv的[0] =“A”;'如果你想,虽然我没有想到要这样做的好理由)。 –