论坛: 编程破解 标题: 关于main()函数 复制本贴地址    
作者: cailiao2 [cailiao2]    论坛用户   登录
最近看过一本编程的书
上面有好几个程序中用到main() 函数的形参char * argv[]
都把其用成了二维数组,不知道这个参数是二维数组还是一维数组?
有哪位高手可以给我讲讲
我先谢谢啦!!!

地主 发表时间: 05-02-24 21:04

回复: kert_t8 [kert_t8]   论坛用户   登录
argv[]本身是一维的,但是这个一维数组里面都是char指针,每一个指针又指向一个字符串,字符串也算是char[],所以呢,咳咳,当然你不能就直接认为他是二维数组,因为标准的二维数组应该是个矩形,也就是说每行的列数应该是一样的

B1层 发表时间: 05-02-25 01:17

回复: 286 [unique]   版主   登录
应该是个指针数组吧? (也可能是数组指针,我是分不清)。
但你可以理解为是二维数组,其中每一个值是传过来的参数。

B2层 发表时间: 05-02-25 09:09

回复: onizuka [onizuka]   论坛用户   登录
当数组作为函数的参数进行传递时,数组自动的退化为同类型的指针

B3层 发表时间: 05-03-01 17:50

回复: ipc2000 [ipc2000]   论坛用户   登录
这个在C++的SDK的自动生成里面就有!!


B4层 发表时间: 05-03-29 23:14

回复: hackgou [hackgou]   论坛用户   登录
char * argv[]的是指针数组,第一个指向程序本身
以后依次指向shell传递给该程序的参数。
而随之合用的一个参数是int argc,该参数表明到底有多少个参数。
比如如下test.cpp
代码:

#include <iostream>
using namespace std;
int main(int argc,char *argv[])
{
for (int n=0; n<argc ; n++)
{
cout << argv[n] <<endl;
}
return 0;
}


编译并运行
#test test1 test2
test
test1
test2
#test test1 test2 test3
test
test1
test2
test3


B5层 发表时间: 05-03-30 23:06

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号