C到C++ 快速过度 A C++基本框架

扶醉桌前 提交于 2019-12-05 20:17:09

单从语法上讲,C++继承了C中几乎所有的关键字,因此在C++中使用C语言完全没有问题。

需要注意的是,printf() 和 scanf() 是库函数,他们并不是C语言的一部分。比如,你不包含头文件stdio.h的时候便无法使用他们,但int,while,for等关键字仍然可以使用。

在C++中使用C语言的库函数时,在包含头文件的部分,需要作一些变更:
我们使用 #include <cstdio>,而不是 #include <stdio.h>。这对于C中的其他头文件也一样,比如 <ctype.h> , <string.h> 在C++中都要用 <cctype> 和 <cstring> 代替。

学习语言时我们最先接触的总是程序框架,之后学习的内容只需在此之上进行添加和修改:


#include <iostream>

using namespace std;

int main()

{

    return 0;

}

这是C++的基本框架,它和C的:

#include <stdio.h>

int main()

{
    return 0;

}

稍有不同。

我们各自包含了他们的一个基本库函数的头文件,它们各自含有C++和C中的输入输出函数。

对C而言,我们用下面的程序进行输入输出:

#include <stdio.h>

int main()

{

    int n;

    if(scanf("%d", &n))

        printf("I entered a number %d to n.\n", n);   

    return 0;

}


我在这里很矫情地使用了if语句,提醒大家scanf()是有返回值的,它返回正确读入变量的个数。

而在C++中,我们这么干:

#include <iostream>

using namespace std;

int main()

{

    int n;

    if(cin >> n)

        cout << "I entered a number " << n << " to n.\n";

    return 0;

}


不难猜出cin和cout的作用,它们和scanf()还有printf()的作用是类似的。而且十分方便,我们终于不用记忆那些繁琐的格式说明符了,C++中的cin和cout会自动判别n是一个in型变量。需要注意的是 >>和<< 是C++中的操作符。

另外,if(cin >> n)是有些奇怪的,scanf()有返回值,但cin >> n是个什么东西?它有值么?事实上cin是一个对象,它和 >> 构成了操作符重载,重载函数的返回值是对象本身。头晕么?这涉及到函数重载的内容,在此暂时不作探讨。但我们要知道,这么用cin是合理的:

cin >> n >> m;(m假设已声明。) 可以这么理解(cin >> n) >> m   (cin >> n)就是cin。

这表示依次向n和m中输入,至于m是个什么类型变量,这个cin它会知道的,并会按照这种类型的标准向其输入,就像用了对应了各式说明符一样,这和cout一致。

值得一提的是,C++中多了:

using namespace std;

这行代码。

你会发现using和namespace都是关键字,它们是C++中的,在C中无法使用。

这个语句声明了一个名称空间std,cout和cin是这个空间中的名称,想想看如果没有这行会发生什么?你的IDE会报错,说cout和cin是没有被声明的变量。这和C中包含头文件的用意很相似。

在C中,printf()和scanf()这两个函数可以直接使用,因为它们的定义和声明都已经在别处存放。但是我们要使用#include <stdio.h>,这个文件中包含了它们的声明。
而在C++中,你可以把变量或者类也这么做。比如,你将一个叫做SHIT的变量声明在一个叫做stshit的名称空间中,你只要使用了using namespace stshit; 就可以直接使用这一坨翔而不用声明。
而声明一个名称空间是后面的内容。

事实上根据以上的内容,你在C中能写的程序,在C++中已经可以照搬了,C++提供了全新的输入输出手段。
至于C语言中的函数部分(特别是参数传递中的形参和实参等),变量的作用域等,在C++中依然没有任何变化,但都是重要的内容。


在此给出一个实例程序供大家熟悉C++:
#include <iostream>

using namespace std;

int main()

{

    int n;

    cout << "If you give a num to n,"

         << " I will return you a sum from 1 to n(0 to quit).\n"

         << "n: ";

    while(cin >> n) {

        if(!n) break;

        int sum = 0;

        for(int i = 1; i <= n; i++)

            sum += i;

            cout << "sum: " << sum << endl

         << "Enter n again: (0 to quit) ";

    }

    return 0;

}


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!