C++基础学习第一课(从C语言到C++)

第一课

1,头文件

C++为了兼容C,支持所有C头文件,但为了符合C++标准,所有的C头文件都有一个C++版本,主要的改变是【去掉 .h ,并在名字的前面加c】。如图:

C语言 C++
stdio.h iostream(C++标准输入输出流头文件)
math.h cmath
string.h cstring
stdlib.h cstdlib

2,命名空间

为了解决命名问题(如同名),引入了命名空间,它可作为附加信息来区分不同库中,相同名称的函数

、类、变量等,本质上,命名空间就是定义了一个范围;

作用域限定符: '::';【若加在变量前面,则该变量输出的值是全局变量的值,不加则输出局部变量的值】
定义方式:
    namespace name//name为自定义命名空间名
{
    代码声明;
}
使用方式:
    name::code;//code可以是变量或函数
    using name::code;//只使用name下面的code
    using namespace name;//使用name里面的所有内容

3,输入输出

C语言的输入输出主要用的是scanf和printf函数,而C++是使用类对象cin、cout进行输入输出;

例子:
#include<iostream>
using namespace std;
int main()
{
	int a;
	double b;
	char n[44];
	cin >> a >> b >> n;//cin输入流对象
	cout << a << b << n <<endl;//cout输出流对象//endl换行,并清空输出缓冲区
	return 0;//【\n依旧可以在cout中使用】
}

4,基础数据类型

C++和C的基础数据类型几乎一样;

char short int long (long long) float double unsigned signed ...

注意事项:

1,C语言中虽然有bool布尔类型,但需要包含头文件<stdlib.h>,而C++不用,可直接使用;
布尔类型对象可以被赋予文字值true或false,所对应的关系就是真与假的概念,即(0,1);
2,可以使用boolalpha打印出bool类型的true和false;
    例子:
    bool Compare(int a,int b)
{
    return a < b;
}
cout << boolalpha << Compare(4,5) <<endl;//输出true

5,强弱类型

C语言:强类型,弱检查;

例子:
    void* p=NULL;
    int* pl=p;
    
    int* pn=NULL;
    void* pp=pn;
//无报错,无警告

C++:强类型,强检查;

例子:
    void* p=NULL;
    int* pl=p;   //错误: "初始化",无法从"void*"转换到"int*";
                 //使用强制转换可以解决
    int* pn=NULL;
    void* pp=pn;//正确: 任意类型的指针都可以自动转为万能指针;

6,NULL与nullptr

NULL是给指针赋值的,表示指针指向的是空,nullptr在C++中替代了NULL;

在C语言中,NULL会被定义成(void*)NULL,但是C++不允许直接将void *隐式转换到其他类型,NULL只好被定义为0;

7,const

1,C语言中的const并不是真正的常量,只是表示const修饰的变量为只读;

例子:
    const int age=19;
    //age=99;//error 左值指定 const对象;
   int* pn=(int*)&age;
   *pn=99;
   printf("%d %d ",age,*pn);//输出:99 99
   
//可知常量pn的值已经通过指针被间接改变;

2,C++中的const:

const int age=18;
//age=99;//error "age"不能给常量赋值
int* pt=(int*)&age;
*pt=99;
printf("%d %d ",age,*pn);//输出:18 99

3,const参数不匹配的情况

例子:
    void show(char* name)
{
    cout << name << endl;
}
show("king");//error "const char*"类型的实参与 "char*"类型的形参不兼容
             //需要给函数形参加上const

char* name="king";//error
const char* name="king";//true

上一篇:【数学建模】计划生育政策调整对人口数量、结构及其影响的研究matlab源码


下一篇:Python爬虫-百度贴吧