new

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//1、new的基本语法
int *func()
{
//在堆区创建整型数据
//new返回是 该类型的指针
int *p =new int(10);
return p;
}

void test01()
{
int *p =func();
cout<<*p<<endl;
//堆区的数据 有程序员管理开辟,程序员管理释放
//如果想释放堆区的数据,利用关键字delete
delete p;
}

//2、在堆区利用new开辟数组
void text02()
{
//创建10整型数据的数组,在堆区
new int[10];//10代表数组有10个元素
int *arr=new[10]; //10代表数组有10个元素

for(int i=0;i<10;i++)
{
arr[i]=i+100; //给10个元素赋值 100~109
}
//释放堆区数组
//释放数组的时候 要加[]才可以
delete[]arr;
}
int main()
{
test01
text02;
return 0;
}

引用的基本语法

  • 引用:给变量起别名

  • 语法:数据类型 &别名=原名

  • 引用必须初始化

  • 引用在初始化后,不可以改变

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    int main()
    {
    int a=10;
    int b=20;
    //int &c; //错误,引用必须初始化
    int &c=a; //一旦初始化后,就不可以更改
    c=b; //这是赋值操作,不是更改引用

    cout<<"a="<<a<<endl;
    cout<<"b="<<b<<endl;
    cout<<"c="<<c<<endl;

    system("pause");
    return 0;
    }

    引用作函数参数

    • 函数传参时,可以利用引用的技术让形参修饰实参

    • 优点:可以简化指针修改实参

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      //1、值传递
      void myswap01(int a,int b)
      {
      int temp=a;
      a=b;
      b=temp;
      }
      //2、地址传递
      void myswap02(int *a,int *b)
      {
      int temp=*a;
      *a=*b;
      *b=temp;
      //3、引用传递
      void myswap03(int &a,int &b) //引用传递,形参也会修饰实参
      {
      int temp=a;
      a=b;
      b=temp;
      }
      }