C++概述

C++概述


前言

我们学习了一个学期的C语言,相信大家都对编程有了一个相对全面的认识
现在我们要进入C++了,那么,到底C++和C有什么区别呢?
我们先来看一个输出hello,world 的小程序

#include <iostream>
using namespace std;
int main()
{
    cout << "Hello, world." << endl;
    return 0;
}

下面将会一点一点的解释上面程序和C的不同

输入输出

cout :一个智能对象

cout << "Hello, world." << endl;
以前无论要输出什么类型的数据,都要告诉编译器这是什么东东
用各种%d %s %f %l ……
现在不用了,我们使用cout的时候,直接输出就好了,
智能对象cin会知道你想要输出什么东西,然后就输出
(毕竟是智能的嘛)
后面的endl 则是我们的换行符(相当于”\n”)
所以我们可以这样子

int a = 1;
double f = 2.3cout << a << "   " << b << endl;
cout << b << " 233333\n";//"\n"一样可以使用

上面的输出是这样子的

a   2.3
2.3 233333
cin: 也是一个智能对象

与cout类似
我们可以使用cin读取数据

int a;
double b;
double d;
char c
cin >> b;
cin >> a >> d;
cin >> c;//!!

cin读取字符的时候,能读空格,能读回车,只有遇见EOF才会不读
(如上面读取C时)
cin读取其余类型的时候,会自动跳过空白字符(空格回车等)

预处理,包含的文件及库

我们的stdio.h呢?

#inlcude<stdio.h>
相信大家都已经打过无数遍这条语句
在C++中,这个语句同样也可以使用,因此我们同样可以用pringf和scanf
不过,C++中,我们有更好的工具,这些工具,都放在了另外一个头文件里
因此我们有了
#include <iostream>
与C类似,内置的库文件我们用<>括起
而自定义的头文件则用双引号”“括住

其他库文件的区别

C中的stdlib.h string.h ctype.h math.h库文件会有变动呢?
在C++中,上面的库文件都是能用的
不过在C++中有个更好的写法

#include <cstring>
#include <cstdlib>
#include <ctype>
#include <cmath>

总结而言,就是少了.h的后缀名,并在前面加C
原因嘛,据说是原本想用.hpp .hxx等做C++头文件的后缀名的
纠结来纠结去,统一不了
然后干脆就都不用后缀名了(简单粗暴的解决方法)

PS:
自定义的头文件还是要用.h的扩展名的,只不过是内置的库文件有改动
再PS:
c++里面有好多好多超好用的库,比C好用多了

名称空间简介

看到了我们的第二条语句:
using namespace std
翻译过来便是
使用 名称空间 std

什么是名称空间

简单来讲就是,
你的名字所在的一个集体
如果说你在七班里面,叫同学的名字:谢江钊,嗯,马上就能够找到
因为全班就一个叫谢江钊的
假设如果其他班也有有个叫谢江钊的,然后你在学校里找(不在七班里找)
惨了,两个同名的,谁是谁
这个时候,你就会加上一个限定范围的名字:计科7班
所以说,如果不在7班这一个名称空间里找这一个名字,你就必须加上限定范围的词汇
偏题了
之前我们所说到的,cin, cout ,都在std这一个名称空间里面
我们用
using namespace std
告诉编译器,我们使用了std名称空间里面的所有名字
之后我们便可以直接调用

如果没有那条语句把所有std名称空间里的名字导入怎么办

在大山中学里找谢江钊,同名的怎么区分?
我们给我们寻找的对象加上一个限定名:
计科7班::谢江钊
这下能够找到吧
同样,如果我们没有使用std名称空间
也可以使用
std::cin
这里的 : : 名字叫做作用域解析运算符
然后我们的程序就变成了这样子

#include <iostream>//少了一条使用名称空间的语句
 int main()
{
    std::cout << "Hello, world." << std::endl;
    return 0;
}
那如果我只想要std名称空间里面的一个名字呢?

using std::cout;

PS
1. 文件iostream里包含了std名称空间,所以我们可以使用std
2. endl也是在std名称空间里的
3. cstdlib,cstring, cmath 里面的函数名字也是在std名称空间里面

引用

一个几乎能够替代指针的东东
长话短说,直接上swap函数对比(作用,交换两个数的数值)

void swap(int *a, int *b)//使用指针
{
    int temp = *a;
    *a = *b;
    *b = temp;
    return ;
}

void swap(int &a, int &b)//使用引用
{
    int temp = a;
    a = b;
    b = temp;
    return ;
}

上面两个函数都能够达到相同的目的:交换两个数的数值。
至于为什么这样子呢?自己看看书吧,以后再详细写。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值