c ++简单指针程序

时间:2014-02-20 08:04:04

标签: c++ pointers atoi

这是一个简单的程序,它汇总了命令行中发送的所有数字。它应该采用任意数量的值。 它每行给我一个0。我已经厌倦了做一些改变,但它继续提供相同的输出

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
   for (int i = 0; i < argc; i++)
{
     int sum=0;
     sum+=atoi("argc[i]");
     cout << sum << endl;
 }
return 0;
}

3 个答案:

答案 0 :(得分:3)

"argc[i]"是一个文字字符串,所以当atoi转换为0时! sum应该在循环之前初始化:

int main(int argc, char *argv[]) {
 int sum=0;
 for (int i = 1; i < argc; i++) {
   sum += atoi(argv[i]);
 } 
 cout << sum << endl;
 return 0;
}

传统上argv[0]是程序的名称(或者至少是命令行中用于调用程序的名称),因此最好从索引1开始。

您需要花费十几个小时阅读更多图书并在计算机上进行试验。在这里问这样一个基本问题根本没有帮助你(并且被认为是粗鲁......)。

不要忘记在编译时启用调试信息和所有警告(例如,如果使用GCC,请使用g++ -Wall -g)。然后,了解如何使用调试器(例如gdb)。

答案 1 :(得分:-1)

您的基础知识不明确,我建议您阅读本书。 程序应该是这样的:

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
   int sum=0;
   for (int i = 0; i < argc; i++)
   {

     sum+=atoi(argv[i]);
   }
   cout << sum << endl;
return 0;
}

答案 2 :(得分:-4)

将参数和移动到循环外!!

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
    int sum=0;
    for (int i = 0; i < argc; i++)
    {

     sum+=atoi(argv[i]);
     cout << sum << endl;
    }
return 0;
}