一:C++的关键字
二.c++的数据类型:
内置类型:c++中基本的数据类型,表示语言内部本身已定义的类型。
自定义类型:表示使用class/enum/struct/union自己定义的类型。
在前面的学习中我们知道,不同数据类型的集合结构体可以实现,
三.命名空间,为了解决全局命名冲突(同名冲突)的问题。
命名空间它相当于一个更灵活的作用域,以关键字namespace来命名。如果统计学生信息:
using namespace std;
namespace STU1
{
int num = 0;
}
namespace STU2
{
int num = 2;
}
int main()
{
STU1::num = 10;
STU2::num = 20;
cout <<STU1::num << endl;
cout << STU2::num << endl;
system("pause");
return 0;
}
这样我们就可以很好的区别STU1可以表示学生1,STU2可以表示学生2;
关键字namespace语法:
语法:
namespace name
{
declaration-list;//成员
}
关键字namespace允许你创建一个新的空间.名字由你选择,忽略创建没有命名的名字空间.一旦你创建了一个名字空间,你必须明确地说明它或者用关键字using.
四.引用,不是定义的是一个新的变量而是给已经定义的变量起的别名;常用符号&表示。就是它的的地址不变,只是换了个名字而已。
void test()
{
int a = 10;
int &b = a;
cout << a << endl;//变量a
cout << b << endl;//变量a的引用
}
引用的特点:
1:应用前变量必须初始化
2:一个变量可以有多个别名。
3.应用只能在初始化的时候应用一次,不能改变为再应用其他的值。
using namespace std;
void test()
{
int a = 10;
int &b = a;
int c = 20;
int &b = c;
cout << a << endl;
cout << b<< endl;
cout <<c<< endl;
}
五.C/C++输入输出对比
C语言中我们知道程序的运行都有输入scanf,输出printf
C++中输入是cin,输出是cout,endl相当于C中'\n'。
using namespace std;
void test()
{
int data = 0;
cout <<"please enter data"<< endl;
cin >> data;
cout << data << endl;
}
六、C++的重载
在同一作用域内函数名相同,参数列表不同(类型/个数不同),返回值可同,可不同。
void fun1()
{
int a = 10;
}
void fun1(int x)
{
int b = 10;
}
编译器可以通过
void fun1(int y)
{
int a = 10;
}
void fun1(int x)
{
int b = 10;
}
不可以。参数列表的类型形同。
void fun1(char *str,int *y)
{
char c = 'A';
int a = 10;
}
void fun1(int *x,char *str)
{
int b = 10;
char d = 'B';
}
在传参数时先从右边,再从左边。
七、const引用
const关键字是修饰常量
using namespace std;
void test1()
{
int a = 10;
const int &b = a;
b = 30;//b是常量不能赋值;
const int c = 20;
const int &d = c;//常引用可以修饰常量;
cout << a << endl;
cout << b << endl;
cout << c << endl;
cout << d << endl;
}
八,引用的传递
值传递:形参是实参的一份拷贝,当形参发生改变,实参的内容并没有发生改变。
void swap(int a, int b)
{
int tmp = a;
a = b;
b = tmp;
}
int main()
{
int x= 10;
int y = 20;
swap(x, y);
cout << x<< endl;
cout << y << endl;
system("pause");
return 0;
}
指针传递:
void swap(int* a, int *b)
{
int tmp = *a;
* a = *b;
*b = tmp;
}
int main()
{
int x= 10;
int y = 20;
swap(&x,&y);
cout << x<< endl;
cout << y << endl;
system("pause");
return 0;
}
a指向一个外部实参的地址,*a取地址的内容,如果改变*a,则结果必然改变。
引用传递
using namespace std;
void swap(int &a, int &b) //形参是实参的别名
{
int tmp = a;
a = b;
b = tmp;
}
int main()
{
int x= 10;
int y = 20;
swap(x, y);
cout << x<< endl;
cout << y << endl;
system("pause");
return 0;
}
我们可以看到传参数,先传y,然后再传x。传参数的顺序是从右向左。
始终记住,引用只是变量的别名,交换a,b实际交换了x,y.