C++练习题1

 1)引用和指针实现加法计算

 2)new和delete实现二维数组的动态申请内存

/*  第一题  */

#include <iostream>
using namespace std;

void Add(int x,int y,int* sum)
{
    *sum = x + y;
}
void Add(int x,int y,int& sum)
{
    sum = x + y;
}

int main()
{
    int sum;
    Add(10,20,&sum);
    cout << "* " << sum << endl;
    Add(11,22,sum);
    cout << "& " << sum << endl;
    return 0;
}
/*  第二题  */
void fun1(unsigned int n)
{
    int (*arr)[6] = new int[n][6];
    for(int i=0;i<n;++i)
    {
        for(int j=0;j<6;++j)
        {
            arr[i][j] = i*6 + j;
            cout << arr[i][j] << " ";
        }
        cout << "\n";   // cout << endl;
    }
    delete[] arr;
}// 此方法必须知道列数

void fun1(unsigned int n, unsigned int m)
{
    //先申请二维数组的行头,相当于申请了n个一位数组,得到每一行第一个元素的指针
    int **arr = new int*[n];
    //再根据每一行第一个元素的指针 申请每个一位数组多少个(m)元素
    for(int i=0;i<n;i++)
    {
        arr[i] = new int[m];
    }
    for(int i=0;i<n;++i)
    {
        for(int j=0;j<m;++j)
        {
            arr[i][j] = i*m + j;
            cout << arr[i][j] << " ";
        }
        cout << "\n";   // cout << endl;
    }
    // 释放内存
    for(int i=0;i<n;i++)
    {
        delete[] arr[i];
    }
    delete[] arr;
}//行与行不连续,整个二维数组内存不连续


int main()
{
    fun1(6);
    fun1(5,5);
    
    return 0;
}

博观约取,厚积薄发!

猜你喜欢

转载自blog.csdn.net/Hanoi_ahoj/article/details/81318146