初始化静态char const*somevar

AoZ*_*AoZ 10 c static pointers const

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

#include ...

static char const *program_name;

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

...
}
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*ler 13

声明:

static char const *program_name;
Run Code Online (Sandbox Code Playgroud)

say program_name是指向常量字符的(变量)指针.指针可以更改(因此可以分配main()),但指向的字符串不能通过此指针更改.

比较和对比:

static char * const unalterable_pointer = "Hedwig";
Run Code Online (Sandbox Code Playgroud)

这是一个指向可变数据的常量指针; 指针不能更改,但如果初始化为指向的字符串不是文字,则可以修改字符串:

static char owls[] = "Pigwidgeon";
static char * const owl_name = owls;

strcpy(owl_name, "Hedwig");

/* owl_name = "Hermes"; */ /* Not allowed */
Run Code Online (Sandbox Code Playgroud)

还比较和对比:

static char const * const fixed_pointer_to_fixed_data = "Hermes";
Run Code Online (Sandbox Code Playgroud)

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


per*_*eal 7

program_name是指向const char的指针,而不是const指针.赋值语句为指针赋值而不是指针.