我正在阅读一段代码,其中有
#include ...
static char const *program_name;
...
int main(int argc, char** argv){
program_name = argv[0];
...
}
我想知道 main 函数如何为 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";
这是指向常量数据的常量指针。
关于c - 初始化 static char const *somevar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14272083/