将返回值分配给int数组

时间:2014-11-17 06:06:28

标签: c arrays pointers memory memcpy

我试图将方法的返回值复制到int数组中。 (方法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;
}

1 个答案:

答案 0 :(得分:0)

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

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

int *getPixelCOlor(...

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

getPixelColor返回本地自动存储的地址,该地址通常位于其堆栈帧中,并将随后的任何函数调用一起销毁。就像你自己的memcpy一样。这是龙。