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;
}
博观约取,厚积薄发!