【发布时间】:2018-04-22 02:16:51
【问题描述】:
我刚从 C 开始,阅读了很多关于指针和数组的内容,但似乎无法理解为什么我的代码不能正常运行。
我正在尝试使用 argv 第一个元素的地址来调节 while 循环,但没有成功。我确信我以错误的方式使用 argv。
代码如下:
int main(int k, const char* argv[])
{ const char** first = NULL ;
first = &argv[0] ;
argv += k ;
while (argv > first) puts(*argv), argv-- ;
return 0 ; }
返回分段错误。
这就是我的想法:
先创建一个指针,赋值为NULL(因为argv类型使用了两个*)
将此指针分配给 argv 第一个元素的地址 argv[0] 以使其显而易见。
将 argv 移动 argc (k)
while 循环将 argv 地址与第一个地址进行比较,只要 argv 没有到达第一个地址,就打印 *argv,然后递减 argv。
上面的代码确实应该返回命令行上的所有元素,从最后一个开始并忽略第一个(程序的名称)。
感谢您的帮助!
【问题讨论】: