xia*_*ian 0 c++ arrays argument-passing
这是一个类似于我定义的函数:
void Function( BYTE *data );
Run Code Online (Sandbox Code Playgroud)
我想做的是这样的事情:
Function( new BYTE { 0x00, 0x00 } );
Run Code Online (Sandbox Code Playgroud)
您不能将数组初始化语法与动态分配的数组一起使用new.你可以这样做:
BYTE *ary=new BYTE[2];
ary[0] = 0;
ary[1] = 0;
Function(ary);
delete [] ary;
Run Code Online (Sandbox Code Playgroud)
但为什么你在这里使用动态分配的内存?数组是否保持在当前函数范围之外?如果没有,您可以使用堆栈上分配的数组:
BYTE ary[2] = {0};
Function(ary);
Run Code Online (Sandbox Code Playgroud)
在C++中,首选方法是使用STL类std::vector,它充当动态分配(但类型安全)的数组:
std::vector<BYTE> ary(2);
Function(&ary[0]);
Run Code Online (Sandbox Code Playgroud)
BYTE foo[] = { 0x00, 0x00 };
Function( foo );
Run Code Online (Sandbox Code Playgroud)
C++ 0x将引入初始化列表语法,该语法将允许更接近您想要的内容.