2.static_cast
fack_argv[2][100] { "program name" , "arg1" } ;
fack_main(fack_argc , static_cast<char **>(fack_argv)) ;
结果:
从类型‘char [3][100]’到类型‘char**’中的 static_cast 无效
为何强制转换会失效呢? 难道只能一步步转换? 试了以下代码:
fack_main(argc , static_cast<char **>(static_cast<char(*)[100]>(f_argv))) ;
试了以下代码: fack_main(argc , static_cast<char **>(static_cast<char(*)[100]>(f_argv))) ;
想要通过两步完成,但是依然报错: 错误:从类型‘char (*)[100]’到类型‘char**’中的 static_cast 无效
这说明从一维数组到指针是OK的,但是第二步就失败了。一想,第二步时,代码其实是在将一个指向数组的指针转为一个指向指针的指针。这或许是编译器不支持的。 失败之后,再一想,既然直接声明二维数组失败了,那么看来只有声明一个一维的数组,数组里放char *就好了。
|