我为计算机科学课编写了一个C ++程序,但是我显然错过了一件事。这是我忽略的陈述:“您的程序必须至少包含一个使用一个或多个参考变量作为参数的函数”。如何在我的程序中合并引用变量并仍然获得相同的结果(因为我的程序确实获得了正确的预期输出)?我将不胜感激。预先感谢!
#include <iostream>
#include <fstream>
using namespace std;
struct Letter_Stats
{
int count;
char ch;
};
void display(Letter_Stats, Letter_Stats);
int main()
{
ifstream inFile;
char ch;
int i;
Letter_Stats letters[26];
Letter_Stats small, large;
inFile.open("letter_count.txt", ios::in);
if (inFile.fail())
{
cout << "Error opening file.";
return 1;
}
for (i = 0; i<26; i++)
{
letters[i].count = 0;
letters[i].ch = ('A' + i);
}
while (!inFile.eof())
{
inFile.get(ch);
if ('A' <= toupper(ch) && toupper(ch) <= 'Z')
letters[toupper(ch) - 'A'].count++;
}
inFile.close();
small = letters[0];
large = letters[0];
for (i = 1; i<26; i++)
{
if (letters[i].count > large.count)
{
large = letters[i];
}
if (letters[i].count < small.count)
{
small = letters[i];
}
}
display(large, small);
return 0;
}
void display(Letter_Stats most, Letter_Stats least)
{
cout << "The most common letter is " << most.ch << " with " << most.count << " occurrences." << endl;
cout << "The least common letter is " << least.ch << " with " << least.count << " occurrences." << endl;
}
答案 0 :(得分:1)
只是改变:
void display(Letter_Stats, Letter_Stats);
收件人:
void display(Letter_Stats&, Letter_Stats&);
和:
void display(Letter_Stats most, Letter_Stats least)
收件人:
void display(Letter_Stats &most, Letter_Stats &least)
引用意味着您不将值作为副本发送给函数,而是将变量的地址发送给函数。 从中获得的优势(在大多数情况下):
编辑:
由于不需要更改这些变量的值,因此可以使用跟随函数的签名,并将变量作为const引用发送,如注释中@ M.M所述:
void display(const Letter_Stats&, const Letter_Stats&);
void display(const Letter_Stats &most, const Letter_Stats &least)