博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C到C++ 快速过度 A C++基本框架
阅读量:5759 次
发布时间:2019-06-18

本文共 2149 字,大约阅读时间需要 7 分钟。

hot3.png

单从语法上讲,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;

}

转载于:https://my.oschina.net/u/1780798/blog/369150

你可能感兴趣的文章
填坑记:Uncaught RangeError: Maximum call stack size exceeded
查看>>
《中国人工智能学会通讯》——11.60 安全隐私感知的移动 App 推荐方法
查看>>
SpringCloud之消息总线(Spring Cloud Bus)(八)
查看>>
DLA实现跨地域、跨实例的多AnalyticDB读写访问
查看>>
(十)Java B2B2C o2o多用户商城 springcloud架构 高可用的服务注册中心
查看>>
Mvp官方示例
查看>>
如何在网站中加入百度统计
查看>>
推荐系统架构设计与实现
查看>>
根分区满了之后的几种处理方法
查看>>
XGBoost与LightGBM对比
查看>>
Future和FutureTask
查看>>
highCharts图标-线性图标实例
查看>>
采用Cloudera-Manager安装CDH时,采用内嵌数据库各数据库用户密码的保存位置
查看>>
嵌入式embeddedjetty练习
查看>>
解决ListView,GridView,Gallery的Adapter中的getView多次调...
查看>>
Hack A10 devices
查看>>
Mysql find_in_set
查看>>
Citrix Receiver界面显示语言控制
查看>>
20个2013年最值得关注的网页设计趋势
查看>>
linux系统性能调优之vmstat
查看>>