全局初始化指向char指针的指针

0 c string embedded

我正在做C编程,需要帮助解决这个问题..

char str[] = "Hello";
char * ptr = str;
char ** ptr2 = (char**)ptr;
Run Code Online (Sandbox Code Playgroud)

我在头文件中有这三行.前两行很好,但第三行会出错.显式错误是"初始化元素不是常量".

是否还有其他方式将地址分配ptr*ptr2全球?或者全球无法实现这一目标?我希望这样做,所以ptr2可以是公共访问点,但如果需要可以更改它指向的内容.

Tyl*_*nry 8

首先,这个:

char ** ptr2 = (char**)ptr;
Run Code Online (Sandbox Code Playgroud)

不分配的地址ptrptr2.它分配str(包含ptr)的地址ptr2并假装它char**而不是a char*,当你试图使用它时可能会带来灾难性的结果.你可能意味着:

char ** ptr2 = &ptr;
Run Code Online (Sandbox Code Playgroud)

由于&ptr(地址)确实是常量,不像ptr(值),这应该编译没有错误.而且,无论如何,这都是你真正想要的.