【问题标题】:Assigning a return value to an int array [duplicate]将返回值分配给 int 数组 [重复]
【发布时间】:2014-11-17 06:06:27
【问题描述】:

我试图将一个方法的返回值复制到一个整数数组中。 (getPixelArray 方法返回一个大小为 3 的 int 数组。)下面是我的代码的违规部分。当我尝试编译这段代码时,我得到了错误

invalid lvalue in unary '&'

会发生什么?我正在听从this 答案的建议。

int temp[3];
memcpy(&temp, &(getPixelColor(width, height, x, y)), sizeof(temp));

编辑:方法如下。

int[3] getPixelColor(int width, int height, float x, float y) {
    int color[3] = {0, 0, 0}; // color of pixel

    // get color (omitted)

    return color;
}

【问题讨论】:

  • (getPixelColor(width, height, x, y)) 不是左值
  • 请贴出getPixelColor()的代码或者至少是它的函数原型。
  • 对不起。我已经发布了函数的骨架。
  • 这段代码完全是错误的。您不能返回数组(也不能返回指向本地自动变量的指针)。而且你可以从不将函数的返回值视为 C 中的左值。

标签: c arrays pointers memory memcpy


【解决方案1】:

符号 tmp 的行为类似于 int 指针。

你甚至不能从一个函数返回一个数组,只能返回一个指针:

int *getPixelCOlor(...

memcpy(temp, getPixelColor(width, height, x, y), sizeof temp);

getPixelColor 返回本地自动存储的地址,该地址通常在它的栈帧中,并且会随着任何后续的函数调用而被销毁。喜欢你自己的memcpy。这里是龙。

【讨论】:

    猜你喜欢
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 2019-05-18
    • 2021-12-29
    • 1970-01-01
    相关资源
    最近更新 更多