我的C ++课程在秋季开始,之前我正在尝试做一些学习,以便在上学时能够站稳脚跟。
无论如何,我正在学习用户定义的变量并且我并不真正理解它与仅仅声明变量之间的区别。我知道我在这里失踪了一些东西,我希望有人可以为我解决这个问题。更具体地说,这是什么区别:
#include<iostream>
#include <cmath>
void myfun(int);
int main()
{
using namespace std;
myfun(45);
system("pause");
return 0;
}
void myfun(int x)
{
using namespace std;
cout << "My favorite number is " << x << endl;
}
而且:
#include<iostream>
#include <cmath>
int main()
{
using namespace std;
int x = 45;
cout << "My favorite number is " << x << endl;
system("pause");
return 0;
}
我没有看到差异,前者看起来更像是一个过程。
答案 0 :(得分:5)
考虑如何输出:
My favorite number is 13
My favorite number is 23
My favorite number is 11
My favorite number is 25
My favorite number is 77
使用函数,它更容易,但如果只使用变量则非常笨拙。
答案 1 :(得分:1)
在第二个图像中,您正在程序的main方法中编写代码(即编译/运行程序时运行的部分),而在第一个图像中,您正在编写相同的代码。功能/方法(它们是相同的东西)。这可能不是最好的示例,因为您的函数只包含几行代码,但是当您需要执行更复杂的操作时,函数的使用会变得无比有用。例如,如果 void myFun(int x){...} 应该乘以2然后在打印之前增加5,它将看起来像这样:
void myfun(int x)
{
using namespace std;
x = x * 2;
x += 5;
cout << "My favorite number is " << x << endl;
}
所以,想象一下你想为3个不同的数字做这个:45,46和47 ...如果你在main方法中编写代码,你必须把它全部写出来3次(或者使用一个循环),但无论如何,你的主要方法开始变得相当混乱:
int main()
{
using namespace std;
int x = 45;
x = x * 2;
x += 5;
cout << "My favorite number is " << x << endl;
int x = 46;
x = x * 2;
x += 5;
cout << "My favorite number is " << x << endl;
int x = 47;
x = x * 2;
x += 5;
cout << "My favorite number is " << x << endl;
system("pause");
return 0;
}
通过使用一个函数,您可以保持代码清洁,避免一遍又一遍地编写相同的代码:
int main()
{
using namespace std;
//these three lines will do the same thing as the code above
myFun(45);
myFun(46);
myFun(47);
system("pause");
return 0;
}
void myfun(int x)
{
using namespace std;
x = x * 2;
x += 5;
cout << "My favorite number is " << x << endl;
}
总而言之,你的两个例子都完成了同样的事情,但是一个会比另一个更好地扩展(保持干净和高效,因为你增加了代码的复杂性)。如果您发现自己编写了相同的代码,那么您可能需要考虑为它编写一个函数,然后在需要运行该代码时调用该函数。
答案 2 :(得分:0)
函数用于使程序更加干净和可读,而且,使用类导致函数,因此您无法访问没有函数的类,如面向对象语言,例如C ++。
此外,函数可以帮助您使用“递归”解决方案来处理分而治之算法中使用的一些问题(当函数多次调用自身时)。
作为一名程序员,你的程序必须整洁可读。
答案 3 :(得分:0)
我建议在所需的标头之后在源文件的开头声明命名空间std。你做的是在每个不同的函数中声明它,std命名空间函数只与局部范围相关。
一个函数用于执行特定任务。例如,一个名为square()的函数可能只是自己返回一个值。如果您要使用特定的数据类型,变量只是一个“持有者”。
一般来说,功能应该只考虑一个主要任务。函数非常有用,因此您的主要源文件不会包含杂乱的源代码。
你的问题是什么是函数和变量之间的区别。 我假设你对函数参数前面的变量类型感到困惑。
for(Map.Entry<String, List<String>> m: hashmapobj.entrySet())
{
String key = m.getKey();
List<String> list = m.getValue();
System.out.println("Key is: "+key);
System.out.println("Value is: "+list);
}
和
int a(int value)
{
return ( value + 1 );
}
函数名前的变量类型表示它将返回的数据类型。例如,在前面的代码中,int()将返回一个整数值。 其中int a只是一个值。
e.g。
int a;
将返回并打印6。