【问题标题】:cast from pointer to integer of different size c从指针转换为不同大小的整数 c
【发布时间】:2017-09-02 22:18:54
【问题描述】:

我在将二维数组的值分配给 int 时遇到问题,它给了我警告“从指针转换为不同大小 c 的整数”。有没有办法将二维数组的值分配给这样的 int:

int main (){

    int test[10][10] = {{1}};

    int integer = (int) test[0];

    return 0;
}

【问题讨论】:

    标签: arrays pointers casting size assign


    【解决方案1】:

    确实,您可以将整数二维数组中的值传递给 int 变量。 你犯了一个小错误,你应该这样写:

    int integer = test[0][0];
    

    为了避免将来出现错误,您需要在数组的其他元素中分配更多变量,否则您将收到 NULL 作为值,在某些情况下会停止程序编译。

    【讨论】:

      【解决方案2】:

      test[0] 代表一行。您不能将整数数组放入整数变量中。

      int * integerPointer = (int *) test[0];

      将是正确的语法。现在 integerPointer 充当一个简单的数组。

      【讨论】:

      • 如果我想将表示数组特定部分的整数指针与另一行的另一个指针数组进行比较,以确定该行表示的数字最大,该怎么办。指针之间如何进行这样的比较?
      • 由于 2D 数组按顺序排列内存。您可以直接比较指针。第 0 行的指针值将小于第 1 行的指针值,依此类推。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-12
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      相关资源
      最近更新 更多