指针和引用

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值