C++与C的区别 day1

这篇博客介绍了C++编程中的头文件使用,包括C语言头文件的C++兼容性及标准输入输出头文件iostream。接着讲解了命名空间的创建、访问和作用,以及using关键字的应用。此外,文章还详细阐述了C++中的新数据类型,如bool和引用,以及它们的特性和使用场景。最后,讨论了自动类型推断(auto)和函数的一些概念,如内联函数、函数重载和缺省参数。
摘要由CSDN通过智能技术生成

头文件与命名空间

  • 创建的源文件是.cpp,头文件没有变化,依然的.h文件

  • 包含目录
    C语言中的:采用原来的方式包含可以用C++包含方式,去掉.h加个c
    C++的标准输入输出头文件是iostream

  • 命名空间的引入
    命名语法

//1.基本创建空间方法
namespace 空间名
{
     int a;
     void print(){}
}
//2.学会访问命名空间中的东西,用空间名限定去访问
int main()
{
   空间名::a=1;
   空间名::printf();
   return 0;
}
  • 可以增加标识符的使用率,C语言同一个作用域下不允许定义相同的标识符

  • 作用域分辨符::
    空间名限定,类名限定
    用来标识全局变量

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

using namespace 空间名; //可省略当前空间名,但是只在当前作用域下有效
  • 空间名嵌套与空间内容访问
namespace A
{
       int a=1
       namespace B
       {
          int b=2;
       }
}
        A::B::b=12;  //剥洋葱
        using namespace A::B;
        b=13

基本输入和输出

  • 包含头文件#include

  • 一般情况都会包含命名空间using namespace std; 如果不包含所有头文件包含的语句会报错

  • 输出语句:cout<<
    C++支持C语言的格式控制字符

  • 输入语句:cin>>

#include <iostream>
using namespace std;//一般都是写在这里
//输入的几个问题
//1.字符串输入空格问题
void  testStr() 
{
	using namespace std;
	char str[10] = "";
	cin >> str;			//不带空格的输入
	cout << str;
	//fflush(stdin)					//已被淘汰
	//setbuf(stdin,NULL);
	while (getchar() != '\n');		//字符和字符串输入前,做了输入
	char c;
	cin >> c;
	cout << c;
	//接受空格的输入--->了解
	cin.getline(str, 10);		//gets_s(str, 10);
	cout.write(str, 10);
}
//2.关于命名空间std
void testNamespace()
{
	//当不加using namespace  std;
	std::cout << "没有写using namespace std" << std::endl;
	std::string str = "ILoveyou";
}
int main()
{
     //1.基本变量打印不需要格式控制
     cout<<"OK\n";
     char str[]="ILOVE\n";
     cout<<str;
     int a=1; float b=1.1;
     //2.一次性打印多个数据,强制类型转换
     cout<<a<<"\t"<<(int)b<<"\n";
     cout<<a<<"\t"<<int(b)<<"\n";
     //3.C++换行 endl代替\n
     cout<<"姓名"<<endl;
     testStr();
}

新数据类型

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

  • 指针的NULL C++中改为nullprt

  • 引用类型
    理解为起别名
    基本引用

//类型名& 别名=要起别名的东西
int a=1;
int&b =a;//a有另一个名字叫b,a就是b,b就是a
  • 引用一般用在那些地方
    函数参数(防止拷贝产生)
    函数返回值(增加左值使用)
    不能返回局部变量引用
#include <iostream>
using namespace std;
void testBool()
{
     bool b=123;
     cout<<b<<endl;
     b=false;
     b=true;
     cout<<b<<endl;
     //boolalpha用true和false方式打印bool类型
     cout<<boolalpha<<b<<endl;
}

int main()
{
     //1.什么是起别名
	int a= 1;
	//类型 & 别名=要起别名的东西
	int& b= a;  //b就是a的别名
	小可爱 = 777;
	cout << b<< endl;
	//2.C++种常量要求更严格
	//想要变量和常量,就必须用const修饰
	printStr("ok"); //形参必须要有const 
	char str[] = "ok";
	printStr(str);
	int aa = 1;
	const int& x = 1;	//第一种写法:const修饰
	const int& x2 = aa;
	//右值引用,只能给右值起别名
	int&& xx = 1;		//常量是右值(运算符的右边)
	//int&& xx2 = aa;   //右值引用只能给右值起别名
          return 0;
}
  • 自动推断类型auto类型:必须根据赋值的数据推断类型,不能直接推断

    函数思想

  • 内敛思想 inline关键字
    • 什么样的函数可以成为inline,短小精悍
    • 在结构体中或者类种实现的函数默认内敛(知道即可)
  • 函数重载: C++允许同名不同参数函数存在
    • 参数数目不同
    • 参数类型不同
    • 参数顺序不同(一定建立在不同类型的基础上)
  • 函数缺省: C++中允许给函数形参初始化
    • 缺省顺序 必须从右往左缺省,缺省的参数中间不能存在没有缺省的
    • 没有参入参数,使用的是默认值
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值