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);
}