void main(int argc,char argv[][])这种参数声明方式是否正确?该如何解决
void main(int argc,char argv[][])这种参数声明方式是否正确?C/C++ codevoid main(int argc,char argv[][
void main(int argc,char argv[][])这种参数声明方式是否正确?
C/C++ codevoid main(int argc,char argv[][]){ int i; printf("\nargc = %d",argc); for(i=0;i<argc;i++) printf("\nargv[%d] = %s",i,argv[i]);}
gcc 3.4.6编译不通过,在printf那行报error: invalid use of array with unspecified bounds
vc6带的cl编译也不通过,在main那行报error C2087: '<Unknown>' : missing subscript
如果把for和printf屏蔽掉,gcc编译通过,cl还是在main那行报error C2087: '<Unknown>' : missing subscript
如果把入口参数argv[][]改为argv[][256],gcc和cl编译均可以通过,但运行结果不正确,argv[i]输出的结果不正确
我的问题是,main的入口参数到底是什么形式,怎样使用argv[][]?谢谢
[解决办法]int main( int argc,char* argv[])
[解决办法]char **argv
或
char *argv[]
[解决办法]char [][]二维数组只能省略第一维的大小。
其实命令行传入的是char* const argv[],每一个元素是一个char*,并且这些char*不允许被修改,但char*指向的字符串允许被修改,可以自己manpage围观一下,以上写法等价于:char* const *argv,但绝对不等价于const char* *argv/const char* *argv[],也就是argv[n]是允许修改的,并不是常量字符串。
[解决办法]正确的用法
int main( int argc,char* argv[])
或者
int main(int argc,char**argv)
[解决办法][解决办法][解决办法]看compiler 支持哪种,没有什么对错