c - 初始化 static char const *somevar

标签 c pointers static constants

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

#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/

相关文章:

c - C 处理指针时出现段错误

c# - 如何在另一个应用程序域中设置静态 bool 值?

c - 警告 : function returns address of local variable [-Wreturn-local-addr]

c++ - 为什么我在取消引用指针和不取消引用指针的情况下得到相同的值

c - 静态指向内存的位置

C++模板矩阵类——方阵特化

static - 如何在广播接收器 Android 中发送广播

c - C 语言中的二维数组旋转 90

c++ - 保存数组地址的指针地址如何相同?

c++ - pthread_mutex_lock 当它是同一个线程时如何不锁定