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

时间:2010-08-26 01:39:56

标签: c embedded string

我正在进行C编程,需要帮助解决这个问题。

char str[] = "Hello";
char * ptr = str;
char ** ptr2 = (char**)ptr;

我在头文件中有这三行。前两行很好,但第三行会出错。显然错误是“初始化元素不是常数”。

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

2 个答案:

答案 0 :(得分:8)

首先,这个:

char ** ptr2 = (char**)ptr;

不会将ptr的地址指定给ptr2。它会将str(包含在ptr)中的地址分配给ptr2,并假装其char**而不是char*,以后可能会带来灾难性后果试着用它。你可能意味着:

char ** ptr2 = &ptr;

由于&ptr(地址)确实是常量,与ptr(值)不同,这应该编译而不会出错。而且,无论如何,这都是你真正想要的。

答案 1 :(得分:0)

我猜您希望ptr2指向ptr。这意味着将ptr的地址分配给ptr2,而不是*ptr2您必须这样做:

char** ptr2 = &ptr;

我不明白你的目标。 ptr也可以根据需要进行更改。

请考虑更好的变量名称。