C++简单指针程序



这是一个简单的程序,它将命令行上发送的所有数字相加。 它应该采用任意数量的值。它一直给我每行一个 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;
}

"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 )。

你的基础知识不清楚,我建议你读这本书。程序应该是这样的:

#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;
}

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

#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;
}

最新更新