题目分别收录于 牛客网 在线编程-语法篇-C++入门-02复合类型-CPP29 和 CPP57
new运算符和delete运算符
new 运算符和 delete 运算符用来动态分配/撤销内存空间。new 运算符用来分配内存空间,delete 运算符用来撤销内存空间。
new 运算符使用格式:
new 类型[初值];
例如:分配一个存放整型一维数组空间,且数组有n个元素:
new int[n];
用 new 分配数组空间时不能指定初值。
delete 运算符使用格式:
delete[]指针变量
例如:首先分配一个存放整型一维数组空间,并将返回的指向整型数组的指针赋给指针变量p ,然后撤销用 new int[n] 分配的空间:
int *p = new int[n]; delete []p;
在指针变量前面加上一对方括号,表示对数组空间的操作。
new 和 delete要配合使用。
题目1
描述
键盘输入一个正整数 n,创建大小为 n 的数组 (采用动态数组的方式),将数组中的元素初始化为 n、n+1、…、2n - 1。并输出数组中的元素。
输入描述:
键盘输入一个正整数 n
输出描述:
输出数组中的元素,元素和元素之间使用空格隔开
示例1
输入:
3
输出:
3 4 5
初始代码:
#include <iostream> using namespace std; int main() { int n; cin >> n; // write your code here...... return 0;
代码1
本题属于简单题。
首先分配一维数组的空间,然后利用指针对数组赋值,最后撤销空间。
#include <iostream> using namespace std; int main() { int n; cin >> n; int *p = new int[n]; for(int i = 0; i < n; i++) { *(p+i) = n + i; cout << *(p+i) << " "; } delete []p; return 0; }
题目2
描述
输入一个正整数 n,创建大小为 n ∗ n n*nn∗n 的二维数组 a aa (采用动态数组的方式),将 a [ i ] [ j ] a [ i ] [ j ]a[i][j] 初始化为 i + j i+ji+j ( 0 ≤ i ≤ n 0 ≤ i≤n0≤i≤n,0 ≤ j ≤ n 0 ≤ j ≤ n0≤j≤n )。并输出数组中的元素。
输入描述:
输入一个正整数 n
输出描述:
输出 n 行,每行 n 个用空格隔开的整数表示数组 a
示例1
输入:
在这里插入代码片
输出:
0 1 1 2
初始代码:
#include<bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; // write your code here...... return 0; }
代码2
本题属于入门题。
#include<bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; int *p = new int [n*n]; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { p[i+j] = i + j; cout << p[i+j] << " "; } cout << endl; } delete []p; return 0; }