1、基础知识架构:
1 几种数据类型的长度:
char 1; short 2 ; int long float 4; double 8;
2 几种数据类型的与"0"值比较:
int : if(a==0) bool if(a); *a: if(a==NULL) float: if(a>-0.000001)&&(a<0.000001);
2、"::" 域解析符:
1 #include <stdio.h>
int a=5;
int main()
{
int a=2
printf("%d\n",::a);
}
此时输出的是全局变量a =5 这个值 ::可以用作 在函数内 同名变量采用全局变量这样的功能 ;
2 用作使用namespace 空间内的成员使用
例如
#Include <iostream>
using namespace std;
namespace A{
print()
{
cout<<"hello world"<<endl;
}
namespace B{
print()
{
cout<<"hello world"<<endl;
}
int main ()
{
A::print();
B::printf();
}
}
这样就可以输出两个了 一个是A的print 一个是B的print;这是两个不同的,如果不用的话 就无法找到这个函数 因为是在一个namespace 文件夹里面
3:、 using 申明符号的是用方法 直接看代码:可以使用任何的 文件里面的成员
#include <iostream>
using std::cin;
using std::string;
int main ()
{
int n;
cin<<n;
std::out<<n<<std::endl;
}
当定义了 cin string 后就可以使用这两个函数了 out和 endl 是用了 ::的使用方法用std 这个文件夹里面的函数;
*using 使用域:
如下代码
#Include <iostream>
using namespace std;
namespace a{
int tmp=2;
}
namespace b{
double tmp=4.2;
}
int main()
{
{
using namespace a;
cout<<tmp<<endl;
}
{
using namespace b;
cout<<tmp<<endl;
}
}
这个代码两个输出 分别是 2 4.2 一个使用的是前面一个 一个使用的是后面一个 因为有{}限制区域 所以使用范围仅在括号内 所以 第一个用的是a 第二个用的是b;
4:分配内存
* 分配内存都是分配在栈上面的, 是程序员自行跟系统索取的,也是程序员自己释放的,所以要了空间以后要记得删除,
C当中 分配分别 是MALLOC 和 free;
C++当中 分配分别是 new 和 delete;
具体分配:例如
char *p=new int ;这条语句给这个P分配了 一个int 的内存; delete p;删除一个指针;
char *str = new int[20]; 这条语句给STR分配了 20*4的内存空间 delete [ ]p; 删除一个数组指针;
*malooc free new delete 是成对使用的不可以分开。
5:重载函数
在C当中 函数的名字 就是函数的入口地址 是唯一的 不允许重复的;但是C++提供了可以重名的重载功能;具体的体现就是
1、形参类型不用
2、形参数目不同
3、 形参数目和类型都不同;
例如 如下代码:
#include <iostream>
using namespace std;
int a(int,int);
double a(double,double);
int a(int ,int ,int ); //这三种函数都是正确的 main函数调用
int main()
{
int a=3,b=5,c=7;
float m=8.7,n=9.2;
a(a,b);
a(a,b,c);
a(m,n); //这三种函数调用都是正确的 系统会自动匹配打相应的函数上
}
如果打印的话 那么上面三个分别是 3 5 3 5 7 8.7 9.2;
2、默认的是形参定义
默认是形参定义是从右往左的,例如 int(int x,int y=2,int z=5);TRUE;
int (int x=0,int y,int z=2);FLASE;
还有以下的函数;
#include <iostream>
using namespace std;
int a(int x,int y=0,int z=0)
{
cout<<x<<y<<z<<endl;
}
int main()
{
int a=1;b=2;c=3;
a(a);
a(a,b);
a(a,b,c);
}
输出结果分别是 1 0 0; 需要注意的是,重载函数 系统会匹配能够符合要求的函数形式,如果有2个以上,那么就会报错有歧义,如果没有就会显示其他错误,形参过
1 2 0; 多,或者形参 太少。
1 2 3;
6:内联函数
内联函数使用的意义:因为函数创建后 就会在栈上分配一份空间,调用函数的过程就是 入站和出栈的过程,如果这个函数 很小的话 那么就是浪费资源,成本过高,
所以用内敛函数就可以 省去进栈出栈 的过程,这样就可以降低成本。
需要注意的事项有:
1、内敛函数中不可以出现 循环和选择语句。
2、调用内联函数之前必须实现定义和申明;
3;内联函数是否使用 由编译器决定,程序员只是提议编译器使用内联函数
4、不能指定跑出异常类型。
代码如下:
#Include <iostream>
using namespace std;
inline int cmp(int x,int y)
{
return x>=y?x:y;
}
int main()
{
int a[10];
int i;
int tmp=a[0];
for(i=0;i<10;i++)
{
tmp=cmp(tmp,a[i]);
}
cout<<tmp<<endl;
}