#c++入门
1. c++关键字
2.命名空间
//求两数之和
#include<iostream> //预处理命令
using namespace std; //使用名字空间std
int main() //主函数首部
{ //函数体开始
int a,b,sum; //定义变量
cin>>a>>b; //输入语句
sum=a+b; //赋值语句
cout<<"a+b="<<sum<<endl; //输出语句
return 0; //如果程序正常结束,向操作系统返回一个0值
}
using namespace std 的意思是使用命名空间std,c++标准库中的类和函数是在命名空间std中声明的,上面程序中出现这一句表示要用到 命名空间std中的内容;
3.命名空间的定义
namespace N //N为命名空间的名称
{
int a=10;
int b=20;
int Add(int left,int right) //命名空间既可以定义变量 ,也可以定义函数;
{
return left+right;
}
namespace N1 //命名空间可以嵌套
{
int c=30;
int d=40;
}
}
//命名空间使用方式一:
int main()
{
printf("%d",N::a); //命名空间名称加作用域限定符
return 0;
}
//方式二:
using N::b
int main()
{
printf("%d",b);
return 0;
}
//方式三:
using namespace N
int main()
{
printf("%d",b);
}
4.缺省参数
4.1 缺省参数的概念:
缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默 认值,否则使用指定的实参。
void test(int a=1)
{
cout<<"a="<<a<<endl;
}
int main()
{
test(); //没有传参时,使用参数的默认值;
test(20); //传参数时,使用实参值;
}
4.2 缺省参数可以分为:全缺省和半缺省两类,缺省值必须时常量或全局变量;
//全缺省
void test1(int a=1,int b=2;int c=3)
{
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
}
//半缺省
void test1(int a,int b=2;int c=3)
{
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
}
5.函数重载
函数重载: 是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形 参列表**(参数个数 或 类型 或 顺序)**必须不同,常用来处理实现功能类似数据类型不同的问题
6.引用和指针的比较
引用和指针的不同点:
-
引用在定义时必须初始化,指针没有要求
-
引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型实
-
没有NULL引用,但有NULL指针
-
在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32位平台下占4 个字节)
-
引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小
-
有多级指针,但是没有多级引用
-
访问实体方式不同,指针需要显式解引用,引用编译器自己处理
-
引用比指针使用起来相对更安全
7.宏的优缺点
优点
1.增强代码的复用性;
2.提高性能;
缺点
1.不方便调试宏;
2.导致代码可读性差、可维护性差、容易误用;
3.没有类型安全的检查;
c++有哪些技术替代了宏
1、常量定义换用const;
2、函数定义换用内联函数;
c++中定义指针空值
int* p=nullptr;
- 在使用nullptr表示指针空值时,不需要包含头文件,因为nullptr是C++11作为新关键字引入的。
- 在C++11中,sizeof(nullptr) 与 sizeof((void*)0)所占的字节数相同。
- 为了提高代码的健壮性,在后续表示指针空值时建议好使用nullptr。