Fru*_*ose 2 c++ brew-framework
我正在查看有人编写的两行代码,第二行有一个例外,但我不明白为什么.
char** array = (char**) new char [2] [6];
std_strlprintf(array[0],6,"[%d]", num);
Run Code Online (Sandbox Code Playgroud)
std_strlprintf是一个Brew函数,它将格式化输出写入字符串.(num是一个0的整数值)
为什么这段代码有异常,访问数组的第一个元素为buff [0]有什么问题?
编辑:抱歉我的帖子中有一个错字.现在纠正了.这是具有异常的代码.
二维数组与指针数组不同.
您的第一个语句创建两个六个字符的数组,每个字符作为一个内存块.将该语句替换为:
char (*array)[6] = new char [2][6];
Run Code Online (Sandbox Code Playgroud)
并且你将完成你的第二个陈述.别忘了
delete [] array;
Run Code Online (Sandbox Code Playgroud)
嗯,我应该知道:)在评论中你的问题:
我应该如何随后将数组传递给一个带
char**参数的函数?
你没有.不是这种形式.如果要为某些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 );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
558 次 |
| 最近记录: |