一、函数基础
返回值类型 函数名(参数列表)
{
声明和语句;
return X;
}
示例:
#include <iostream>
using namespace std;
int f1()
{
return 1;
}
float f2()
{
return 1.0f;
}
char f3()
{
return 'B';
}
int main() {
cout << f1() << endl;
cout << f2() << endl;
cout << f3() << endl;
return 0;
}
输出结果:
1
1
B
示例2:
#include <iostream>
using namespace std;
void increase(int x)
{
for(int i = 1;i<=5;i++)
++x;
}
int main() {
int a = 0;
increase(a);
cout << a << endl;
return 0;
}
输出结果:
0
上述示例中,再调用increase方法时,将a的值赋值给了x,并进行相关计算,a的值并没有因此发生改变。
如果想要直接对a进行操作,只需要定义为&x,将x定义为引用型。(在C++环境中)
示例如下:
#include <iostream>
using namespace std;
void increase(int &x)
{
for(int i = 1;i<=5;i++)
++x;
}
int main() {
int a = 0;
increase(a);
cout << a << endl;
return 0;
}
输出结果:
5
&可以靠近变量,也可以靠近类型。
int &x
int& x
定义为引用型变量,变量只能传入变量,不可以传入常量。
二、作用域
示例1:
#include <iostream>
using namespace std;
void f()
{
int a = 10;
}
int main() {
int a = 0;
f();
cout << a << endl;
return 0;
}
输出结果:
0
示例2:
#include <iostream>
using namespace std;
void f(int a)
{
a = 10;
}
int main() {
int a = 0;
f(a);
cout << a << endl;
return 0;
}
输出结果:
0
示例3:
#include <iostream>
using namespace std;
int a = 10;
void f()
{
++a;
cout << a << endl;
}
int main() {
cout << a << endl;
f();
return 0;
}
输出结果:
10
11
示例4:
#include <iostream>
using namespace std;
int a = 10;
void f()
{
int a = 5;
cout << a << endl;
}
int main() {
cout << a << endl;
f();
return 0;
}
输出结果:
10
5
示例5:
#include <iostream>
using namespace std;
int main() {
int a = 10;
{
int a = 5;
cout << "inside:" << a << endl;
}
cout << "outside:" << a << endl;
return 0;
}
输出结果:
inside:5
outside:10
当内部作用域中的变量名与外部作用域的变量名相同时,内部作用域会屏蔽掉外部作用域的变量,外部作用域无法直接调用内部作用域的变量。
三、静态变量
示例1:
#include <iostream>
using namespace std;
void f(){
int a = 0;
++a;
cout << a << endl;
}
int main() {
for (int i = 0; i < 5; ++i) {
f();
}
return 0;
}
输出结果:
1
1
1
1
1
在上述示例中,for循环,循环5次,循环打印了5个1,没有出现累加操作。每次调用f(),都会重新定义一个a,f()调用结束后,a被回收。
如果要使得每次调用f()时操作的时同一个a,需要给a增加一个static的修饰。
示例2:
#include <iostream>
using namespace std;
void f(){
static int a = 0;
++a;
cout << a << endl;
}
int main() {
for (int i = 0; i < 5; ++i) {
f();
}
return 0;
}
输出结果:
1
2
3
4
5
我的微信公众号.jpg
网友评论