输出动态数组或矩阵的元素
Printing out elements of dynamic array or matrix
为什么这个简单的代码打印出一个数组不工作?
void main()
{
cout<<"Simple forn";
int n;
cout<<"Enter the lenght of array:";
cin>>n;
int* a= new int[n];
for(int j=0; j<n; j++){
a[j]=0;
cout<<setw(8)<<a[j];
//getchar();
}
getchar();
delete[]a;
}
输出迅速消失
当n是常数时,它起作用,但当n来自输入时,它不起作用。当getchar输入For时,它只输出任意长度的数组中的两个元素。
怎么了?
你可能想要这样:
int* a= new int[n];
c++不是C;你不分配"字节"与new
;你分配对象。数组、类型等。所以如果你想要一个int
类型的n
值数组,那么你就分配它。不需要sizeof
、乘法等
注意,任何你用数组版本的new
(即:new Type[]
)分配的东西都必须用数组版本的delete:
delete []a;
大小是不必要的;你只需要确保new[]
和delete[]
是配对的
此分配
int* a= new int(n*sizeof(int));
只分配一个int
,并设置其初始值为n*sizeof(int)
。不完全是你想要的。
分配n个int的正确方法是
int* a = new int[n];
或者更好的
std::vector<int> a(n);
谢谢大家问题解决了……但我不知道为什么。有人能解释一下这里另一个getchar()的作用吗?
这是新的代码:
int main()
{
cout<<"Simple forn";
int n;
cout<<"Enter the lenght of array:";
cin>>n;
int* a= new int[n];
for(int j=0; j<n; j++){
a[j]=0;
cout<<setw(8)<<a[j];
}
delete[]a;
getchar();
getchar();
}
相关文章:
- 输出没有重复元素的动态数组(收缩数组)C++
- 访问动态分配列表中的元素
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- 是否可以使用 new 指定具有宏常量的动态分配数组的元素?
- 动态分配列表 - 创建一个函数,用于删除所有包含偶数值的元素
- 在动态数组中添加/删除C++元素
- 是否可以使用宏来访问动态数组或向量中的元素或为其赋值
- 存储指向动态数组元素的指针
- c++ 使用动态分配运算符反向数组元素
- 我正在丢失动态分配的数组中的元素
- 通过动态分配插入列表元素
- Gstreamer 动态更改源元素
- 在指向对象的指针的动态数组上插入新元素
- C++ rezing 动态数组最多可以处理一定数量的元素,但在某些时候会崩溃并显示错误 (0XC0000005)
- 删除动态分配数组的 1 个元素
- C++:指针元素的向量在销毁时是否会自动释放每个指针所指向的动态内存?
- 动态地添加元素
- C++ 如何使用类方法正确访问动态数组元素
- 使用动态分配创建数组并将元素插入其中
- 如何初始化vlaue,并将其逐个元素动态分配给数组