美文网首页c/c++
C/C++的函数与程序结构

C/C++的函数与程序结构

作者: 程序员丶星霖 | 来源:发表于2020-08-27 17:25 被阅读0次

一、函数基础

返回值类型  函数名(参数列表)
{
    声明和语句;
    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

个人博客:http://www.coderlearning.cn/

我的微信公众号.jpg

相关文章

网友评论

    本文标题:C/C++的函数与程序结构

    本文链接:https://www.haomeiwen.com/subject/zkqhsktx.html