二维数组与指针数组不同。
您的第一条语句创建两个包含六个字符的数组,每个数组作为一个内存块。将该语句替换为:
char (*array)[6] = new char [2][6];
你会准备好你的第二个陈述。不要忘记
delete [] array;
编辑0:
呵呵,我应该知道 :) 对于评论中的问题:
我应该如何随后将数组传递给以 achar**
作为参数的函数?
你没有。不是这种形式。如果您正在为某些 C API(如 )构建参数列表execve(2)
,则必须一直进行两阶段初始化:
// prototype of the function to call
void my_fancy_func( int argc, char* const argv[] );
char** my_argv = new char*[my_argc];
for ( i = 0; i < my_argc; i++ ) {
my_argv[i] = new char[arg_buffer_size];
snprintf( my_argv[i], arg_buffer_size, "%d", i );
}
my_fancy_func( my_argc, my_argv );