详见:https://www.nowcoder.com/practice/218b577112a24c23a41bdc01f28c18ac?tpId=225&tags=&title=&difficulty=0&judgeStatus=0&rp=0
用指针-第一种
C++申请动态数组是依靠指针,数组是int型的我们就新开一个int型的指针,同时为这个新开的指针申请n个int型的空间,用new语句直接申请即可。
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
// write your code here......
//新建数组
int* p = new int[n];
for (int i=0; i<n; i++) {
//给数组元素赋值
p[i] = n+i;
}
//输出数组中的元素
for (int i=0; i<n; i++) {
cout << p[i] << " ";
}
return 0;
}
用指针-第二种
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int* p = (int*)malloc(n * sizeof(int)); // 开辟n个int类型的空间
int *q = p;
for (int i=0; i<n; i++) {
*q = n+i;
q++;
}
for (int i=0; i<n; i++) {
cout << *p << " ";
p++;
}
// /*
// 若输出的是 q ,则输出 "0 0 0"
// */
// for (int i=0; i<n; i++) {
// cout << *q << " ";
// q++;
// }
return 0;
}
以下不是通过创建动态数组的方法
用vector
#include <iostream>
// #include <vector>
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
// write your code here......
vector<int> vec;
// for (int i=n; i<=(2*n-1); i++) {
// vec.push_back(i);
// }
for(int i=0; i<n; i++) {
vec.push_back(n+i);
}
for (int i=0; i<n; i++) { // for(int i=0; i<vec.size(); i++)
cout << vec[i] << " ";
}
return 0;
}
不用指针-第一种
示例:
输入:3
输出:3 4 5
错误写法:
这样输出的是:
5 5 5
#include <iostream>
// #include <vector>
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
// write your code here......
int arr[] = { 0 };
for (int i=0; i<n; i++) {
arr[i] = n+i;
}
for (int i=0; i<n; i++) {
cout << arr[i] << " ";
}
return 0;
}
正确写法:
#include <iostream>
// #include <vector>
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
// write your code here......
int arr[] = { 0 };
for (int i=0; i<n; i++) {
arr[i] = n+i; //赋值
cout << arr[i] << " "; //每次循环输出数组内的值
}
// cout << arr << endl; // 输出数组的内存地址:0x7fff7c2d8930
return 0;
}
不用指针-第二种
#include <iostream>
// #include <vector>
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
// write your code here......
int arr[1000];
for (int i=0; i<n; i++) {
arr[i] = n+i; //赋值
cout << arr[i] << " "; //每次循环输出数组内的值
}
return 0;
}
或:
注意跟不用指针-第一种
的错误写法
区别开。
即:
若int arr[] = { 0 };
,则通过循环输出:cout << arr[i] << " ";
的是数组的最后的一个元素。
而若int arr[n];
,则通过循环正常输出:cout << arr[i] << " ";
。
#include <iostream>
// #include <vector>
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
// write your code here......
int arr[n];
for (int i=0; i<n; i++) {
arr[i] = n+i; //赋值
}
for (int i=0; i<n; i++) {
cout << arr[i] << " "; //每次循环输出数组内的值
}
return 0;
}