【问题标题】:How can I dereference this 2D dynamic array?如何取消引用这个 2D 动态数组?
【发布时间】:2016-05-25 02:37:26
【问题描述】:

我在第 5 行的 if 语句条件中取消引用二维动态数组时遇到问题。

typedef char* CharArrayPtr;

void reserveSeat(CharArrayPtr *m, char row, char seatLetter){
    for(int j = 1; j < 5; j++){
        if(m[row - 1][j] == seatLetter)
            m[row - 1][j] = 'X';
    }
}

我尝试将 * 放在前面,但收到以下错误消息:

间接需要指针操作数('int'无效)

任何帮助表示赞赏,在此先感谢。

【问题讨论】:

  • 什么是CharArrayPtr
  • 还要解释你到底遇到了什么问题。包括任何相关编译器错误消息或运行时错误的确切文本
  • 上面添加了CharArrayPtr的定义。
  • 当我构建并运行时,编译器会停在那一行。我认为它认为我将地址与 char 值进行比较是错误的。
  • @borninla 这不是错误。您的错误在其他地方,很可能是您传递给函数的 m 变量管理不善。

标签: c++ arrays pointers dynamic


【解决方案1】:

您没有将 m 作为二维数组传递,您使用了单个指针。

void reserveSeat(CharArrayPtr **m, char row, char seatLetter)

并取消引用它使用 ((w+i)+j);

【讨论】:

    【解决方案2】:

    如果您的意思是通过运算符 * 取消引用二维数组,请尝试以下操作。

    typedef char* CharArrayPtr;
    
    void reserveSeat(CharArrayPtr *m, char row, char seatLetter){
        for(int j = 1; j < 5; j++){
            //if(m[row - 1][j] == seatLetter)
            if( *( (char*)m + (row - 1)*5 + j ) == seatLetter)
                m[row - 1][j] = 'X';
        }   
    }
    

    【讨论】:

      猜你喜欢
      • 2015-09-30
      • 2011-01-18
      • 2021-10-07
      • 2022-07-08
      • 1970-01-01
      • 2014-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多