C++ 尝试使用cout打印循环中的数组时出错 #包括 #包括 int main(){ int n; 标准:cin>>n; int*a; 对于(int i=0;i>a[i]; } 对于(int i=0;i
您需要为C++ 尝试使用cout打印循环中的数组时出错 #包括 #包括 int main(){ int n; 标准:cin>>n; int*a; 对于(int i=0;i>a[i]; } 对于(int i=0;i,c++,arrays,cout,C++,Arrays,Cout,您需要为a分配内存,否则程序的行为是未定义的。写入 int*a=newint[n]; 完成所有操作后,将添加到它,然后是delete[]a;(将其放在return 0;之前) 或者,使用一个std::vector a(n);,所有内存分配都将由您负责。int*是指向int的指针,而不是数组。 要创建int的数组,例如:inta[100];-其中100是大小 此外,您还应使用: vec; 对于(int i=0;i!=n;++i){ 内部温度; cin>>温度; 向量安置(临时); } 尝试:int
a
分配内存,否则程序的行为是未定义的。写入
int*a=newint[n];
完成所有操作后,将添加到它,然后是delete[]a;
(将其放在return 0;
之前)
或者,使用一个
std::vector a(n);
,所有内存分配都将由您负责。int*
是指向int的指针,而不是数组。要创建
int
的数组,例如:inta[100];
-其中100是大小
此外,您还应使用:
vec;
对于(int i=0;i!=n;++i){
内部温度;
cin>>温度;
向量安置(临时);
}
尝试:int a[20];而不是int*a;您的a
没有指向任何有效内存,从而导致未定义的行为
您需要的是一个std::vector
:
vector<int> vec;
for (int i = 0; i != n; ++i) {
int temp;
cin >> temp;
vec.emplace_back(temp);
}
#包括
int n;
标准:cin>>n;
std::向量数;
对于(int i=0;i>val;
数字。推回(val);
}
因为(int i=0;iint*a;
是一个指向整数的指针,它只是一个指向某个内存的指针,它本身没有分配内存。由于您在没有首先设置它的情况下解除对该指针的引用,编译器甚至应该给您一些警告,告诉您正在使用一个尚未初始化的变量
0xC0000005
Windows中的错误代码表示访问冲突。在这种情况下,您正试图写入一些您无权访问的内存
在读取或写入内存之前,需要先分配内存
如果您事先知道将有多少个条目,您可以进行静态内存分配,如果不知道,则需要进行动态内存分配
例如,如果您知道最多只需要20个条目,您可以轻松地将int*a;
交换为int a[20];
但是,由于您只知道程序运行时将有多少个条目,因此需要进行动态内存分配:int*a=newint[n];
所以你的代码应该是
#include <vector>
int n;
std::cin>>n;
std::vector<int> numbers;
for (int i=0;i<n;i++){
int val;
std::cin>>val;
numbers.push_back(val);
}
for(int i=0;i<n /* or numbers.size()*/ ;i++){
std::cout<< numbers[i];
}
#包括
#包括
int main(){
int n;
标准:cin>>n;
int*a=新的int[n];
对于(int i=0;i>a[i];
}
对于(int i=0;i您的代码有一些问题。首先,您请求数字“n”,然后需要分配足够的空间来存储这么多整数
最好的方法是使用vector。您可以使用以下工具创建此工具:
#include <cstdio>
#include <iostream>
int main (){
int n;
std::cin>>n;
int *a = new int[n];
for (int i=0;i<n;i++){
std::cin>>a[i];
}
for(int i=0;i<n;i++){
std::cout<<a[i];
}
delete[] a; // Release allocated memory.
return 0;
}
std::vector数字(n);
您也可以通过分配内存来创建它,但要等到您有了数据:
std::vector< int > numbers( n );
std::vector数字;
数量。储备(n);
您可能还应该验证您的输入,例如您的输入流(cin)如果用户输入的不是整数,则将无效,如果您要尝试创建该大小的向量,则原始的“n”应为正,并且您可能需要设置限制,否则您将遇到错误。\u alloc
。如果您不介意遇到错误,\u alloc
,您应该捕获该异常并打印错误例如“没有足够的空间分配尽可能多的数字”
当然,如果你输入一个很高的数字,比如1000万,你可能会发现编译器能够分配那么多,但是当你要求用户输入1000万次整数时,用户会对你的循环感到厌烦
你不需要
作为标题。你需要
和
你没有任何数组。a
是一个指针,它不指向任何东西;试图索引它会导致未定义的行为。我建议不要在这里使用指针,如果你想在运行时确定大小,只需使用std::vector
。哦,天哪,不要让这个家伙在阅读之前开始新东西。为什么是20?他要求一个数字,然后输入那么多整数。他应该使用vector。我认为上面的最后一个解决方案甚至比vector20更好,因为他不会手工输入超过20个整数来测试他的程序。
std::vector< int > numbers( n );
std::vector< int > numbers;
numbers.reserve( n );