10

我正在阅读一段代码,其中有

#include ...

static char const *program_name;

...
int main(int argc, char** argv){
program_name = argv[0];

...
}

我想知道主函数如何为const变量赋值。任何帮助,将不胜感激!

4

2 回答 2

15

声明:

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";

这是一个指向常量数据的常量指针。

于 2013-01-11T05:14:10.127 回答
8

program_name是指向 const char 的指针,而不是 const 指针。赋值语句将值分配给指针而不是指针。

于 2013-01-11T05:13:45.103 回答