指针和引用

来源:互联网 发布:泰国出行必备软件 编辑:程序博客网 时间:2024/06/03 14:32

一: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.

0 0
原创粉丝点击