C++ 在c中如何将多维数组作为指针传递

C++ 在c中如何将多维数组作为指针传递,c++,c,pointers,multidimensional-array,pointer-to-array,C++,C,Pointers,Multidimensional Array,Pointer To Array,可能重复: 所以我有charbuffer[4][50] 我需要将它传递给一个方法void-SetBuffer(char**buffer),或者至少我认为应该这样格式化它 所以我做了SetBuffer(缓冲区)?在方法中,我需要将每个元素设置为 void SetBuffer(字符**缓冲区) { strncpy(缓冲区[0],“某物”,50); strncpy(缓冲区[1],“其他东西”,50); } C++如何使用适当的容器(如:代码> STD::vector < /COD>或 STD::S

可能重复:

所以我有char
buffer[4][50]

我需要将它传递给一个方法
void-SetBuffer(char**buffer)
,或者至少我认为应该这样格式化它

所以我做了
SetBuffer(缓冲区)?在方法中,我需要将每个元素设置为

void SetBuffer(字符**缓冲区)

{

strncpy(缓冲区[0],“某物”,50);

strncpy(缓冲区[1],“其他东西”,50);

}


C++如何使用适当的容器(如:代码> STD::vector < /COD>或<代码> STD::String )。 OTOH,如果有特别的原因需要使用数组,那么使用指针(就像您已经做的那样)并显式传递维度是一种方法。

有很多方法:

最简单的是:

void SetBuffer(char[][50] buffer)
{
strncpy(buffer[0], "something", 50);
strncpy(buffer[1], "something else", 50);

}警告:这是一个C答案。我认为你的答案是正确的,但更好的方法是:

#define BUFFER_DIM_1   4
#define BUFFER_DIM_2   50

int    i;
char **buffer;

/* Create an array of pointers to the lower level */
buffer = malloc(BUFFER_DIM_1 * sizeof(char *));
for (i=0; i<BUFFER_DIM_1; i++) {
    buffer[i] = malloc(BUFFER_DIM_2 * sizeof(char));
}
#定义缓冲区尺寸1 4
#定义缓冲区尺寸2 50
int i;
字符**缓冲区;
/*创建指向较低级别的指针数组*/
buffer=malloc(buffer_DIM_1*sizeof(char*));

对于(i=0;i + 1)使用“适当的容器”。我会回答类似的。最好的方法是,我做了一点研究,我发现在C中使用多维数组是一个危险的设计,C中的C是很好的,但是在C++中使用Drkrand轻轻回答,这看起来比C多了,然后C++。
#define BUFFER_DIM_1   4
#define BUFFER_DIM_2   50

int    i;
char **buffer;

/* Create an array of pointers to the lower level */
buffer    = malloc(BUFFER_DIM_1 * sizeof(char *));
buffer[0] = malloc(BUFFER_DUM_1 * BUFFER_DIM_2 * sizeof(char));
for (i=1; i<BUFFER_DIM_1; i++) {
    buffer[i] = buffer[i-1] + BUFFER_DIM_2 * sizeof(char);
}