C和C++的区别(一)

1.文件本身区别

        c语言是.c文件;c++是.cpp文件(头文件不变)。

2.包含头文件方式:

       包含本身头文件无区别(写在哪个路径下就用哪个包含)#include”myString.h“。

       包含库目录:

                c语言中采用原方式#include<stdio.h>,也可用c++方式(c++包含c语言库的时候)#include<cstdio>加c去.h。c++自身头文件#include<iostream>。

3.命名空间

用namespace声明的,命名语法:

创建方式:

namespace 空间名{
    cout<<"这是一个命名空间";
    int a = 1;
    void print(){}

}
iint main(){
{
    //用空间名限定去访问
    空间名::a=1;
    空间名::print();
    return 0;
}
void 空间名::print(){
    cout>>"HelloWorld!"
    }

作用:增加标识符使用率,C语言同一个作用域下不允许定义相同的标识符,同一个文件中,不同命名空间内可以起相同的标识符。(命名空间只能是全局变量)

::作用域分辨符:

         空间名限定,类名限定(后面讲)
         用来标识全局变量

int a=1;
int main(){
    int a=2;
    printf("%d\n",a);//a=2(就近);
    printf("%d\n",::a);//a=1(全局)

using语法 ,可以省略前缀的写法

using namespace 空间名; //就可以省略当前的空间名 //只在当前作用域{}下有效

注意二义性问题。

空间名的嵌套与空间内容访问
 

 namespace A
  {
      int a=1;
      namespace B
      {
          int b=1;
      }    
  }
  A::B::b=2;        //剥洋葱
  using namespace A::B;
  bb=10;

4.c++基本输入输出: 

 #include <iostream>
一般情况都会包含命名空间  using namespace std;
输出: cout<< 做输出
C++支持C语言的格式控制字符
输入: cin>>做输入

强制类型转换

(int)a、int(a)

清空缓冲区

fflush(stdin)

setbuf(stdin,NULL)

5.新的数据类型

布尔类型

占用内存是一个字节
计算机非零表示成立,只有0或者指针空表示不成立
一般充当函数返回值,或者开关
正常输出是0和1
C++专有的赋值方式,false和true(用boolalpha)

指针类型

NULL->nullptr

引用类型(起别名(底层指针实现))

void NikeName(){
int a=1;
int& b=a;
//b就是a,a就是b(不存在拷贝)
    }

c++的常量要求更严格

报错注意会修改const。

常引用(两种写法)

int& x=1;//报错

const int& x=1;

int&& x=1;//右值引用(只能给右值起别名,不能给左值起别名)(提供一个修改右值的接口)

用法体现(函数内修改值)

void numA(int a){
a=1;
}
void numAA(int& a){
a=2;
}
void changeA(){
int aa=100;
numA(aa);//拷贝本
cout<<aa<<endl;
numAA(aa);
cout<<aa<<endl;
}

函数返回值(增加左值使用)

和指针一样不能返回局部变量的引用

int& getValue(){
return g_num;
}

返回值就是一个值,所以不能当作左值来用,如getdata()=1001,但是如果返回引用就可以(返回引用就是返回变量本身)

新标准中自动推断类型

自动推断类型auto类型: 必须根据赋值的数据推断类型,不能直接推断

函数思想:

内敛思想 inline关键字
什么样的函数可以成为inline,短小精悍(空间换时间)
在结构体中或者类种实现的函数默认内敛
函数重载: C++允许同名不同参数函数存在(优先调用类型一直的函数,如果没有再找可以转换的)
参数数目不同
参数类型不同
参数顺序不同(一定建立在不同类型的基础上)
函数缺省: C++中允许给函数形参初始化(缺省其实是一种重载的综合写法)
缺省顺序 必须从右往左缺省,缺省的参数中间不能存在没有缺省的
没有参入参数,使用的是默认值

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值