【问题标题】:Initialise pointer to a char pointer globally全局初始化指向 char 指针的指针
【发布时间】:2010-08-26 09:49:47
【问题描述】:

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

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

我在头文件中有这三行。前两行没问题,但第三行会出错。明确的错误是“初始化元素不是常量”。

有没有其他方法可以将ptr的地址全局分配给*ptr2?或者这不可能在全球范围内实现? 我希望这样做,以便 ptr2 可以成为公共访问点,但如果需要,可以更改它所指向的内容。

【问题讨论】:

    标签: c embedded string


    【解决方案1】:

    首先,这个:

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

    不将ptr 的地址分配给ptr2。它将str 的地址(包含在ptr 中)分配给ptr2 并假装它是char** 而不是char*,当您稍后尝试使用它时可能会产生灾难性的结果。您可能的意思是:

    char ** ptr2 = &ptr;
    

    由于&ptr(地址)确实是常量,与ptr(值)不同,这应该可以正确编译。另外,无论如何,这就是你真正想要的。

    【讨论】:

      【解决方案2】:

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

      char** ptr2 = &ptr;
      

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

      请为您的变量考虑更好的名称。

      【讨论】:

      • 我认为变量的名称已被伪装,因为原始变量名称可能无关紧要。
      猜你喜欢
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多