C++ - 将数组传递给方法

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)

180*_*ION 6

您不能将数组初始化语法与动态分配的数组一起使用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)


new*_*cct 5

BYTE foo[] = { 0x00, 0x00 };
Function( foo );
Run Code Online (Sandbox Code Playgroud)

C++ 0x将引入初始化列表语法,该语法将允许更接近您想要的内容.