dju*_*dju -2 c arrays pointers casting
我有一个数组:
\n\nunsigned char data[dataLength];\nRun Code Online (Sandbox Code Playgroud)\n\n和一个函数:
\n\nunsigned char* get_data(int length)\nRun Code Online (Sandbox Code Playgroud)\n\n我想将函数的返回值分配给变量。
\n\n当我直接做的时候
\n\ndata = get_data(length);\nRun Code Online (Sandbox Code Playgroud)\n\n编译器抱怨:
\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
它与 memcpy 一起使用:
\n\nmemcpy(data, get_data(dataLength), dataLength);\nRun Code Online (Sandbox Code Playgroud)\n\n但我不想再次复制数据。
\n\n有人可以帮忙吗?
\n在 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。