数组指针到数组的转换 - C / C++ 初学者

dju*_*dju -2 c arrays pointers casting

我有一个数组:

\n\n
unsigned char data[dataLength];\n
Run Code Online (Sandbox Code Playgroud)\n\n

和一个函数:

\n\n
unsigned char* get_data(int length)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想将函数的返回值分配给变量。

\n\n

当我直接做的时候

\n\n
data = get_data(length);\n
Run Code Online (Sandbox Code Playgroud)\n\n

编译器抱怨:

\n\n
\n

将 \xe2\x80\x98unsigned char*\xe2\x80\x99 分配给 \xe2\x80\x98unsigned char [(((sizetype)(((ssizetype)frameLength) + -1)) + 1)]\ 时的类型不兼容xe2\x80\x99

\n
\n\n

它与 memcpy 一起使用:

\n\n
memcpy(data, get_data(dataLength), dataLength);\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我不想再次复制数据。

\n\n

有人可以帮忙吗?

\n

Lun*_*din 5

在 C 中完成此操作的方法是通过参数传递:

void get_data (int length, unsigned char data[length]);
Run Code Online (Sandbox Code Playgroud)

调用为:

get_data(dataLength, data);
Run Code Online (Sandbox Code Playgroud)

data函数内部现在将是与调用者中分配的对象相同的对象。无需复制,无需 memcpy。