main(int argc,char *argv[]) 问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 00:52:06
#include<stdio.h>
void main(int argc,char *argv[])
{
int n=0,i;
for(i=1;i<argc;i++)
n=n*10+ *argv[i]-'0';
printf("%d\n",n);
}
在cmd 里输入:tt 12 345 678
运行的结果是:136.
请帮忙分析运算过程.
另,如果通过路径: project-> settings-> debug -> program arguments 里面输入参数,
得到的结果却是68136.
请问这是什么原因?
谢谢,我去掉tt, 结果一致.都是:136. 不过可能帮忙解释下运算的过程.

所以这里的*argv[i],是指每个行数组首地址对应的元素.是这样嘛?

在project-> settings-> debug -> program arguments 里面输入:12 345 678
而不要输入:tt 12 345 678

原因是:当输入tt 12 345 678,那么argc等于5,
所以,当i=1,n=n*10+*argv[i]-'0'=0*10+'t'-'0'=68,当i=2,n=68*10+'1'-'0'=681,...,最后n=68136。
注意:argv[i],当i=1时为“tt”,当i=2时为“12”,“345”,“678”,所以*argv[i]则相应为't',‘1’,‘3’,‘6’。

是的,*argv[i],是指每个参数首地址对应的元素。