在 for 循环中定义的临时数组,并分配给属于指针数组的指针
Temporary array defined inside for loop and assigned to a pointer belonging to an array of pointers
在这里,我在for循环中初始化了一个temp arr,并将其地址分配给属于指针数组的ptr,但是当我们从for循环中出来时,存储在该地址中的数据丢失了。如果我们在该地址打印值,它会显示垃圾值。如何解决这个问题?
int n;cin>>n;
int* ptr[n];
for(int i=0;i<n;i++){
int k;
cin>>k;
int arr[k];
for(int j=0;j<k;j++){
cin>>arr[j];
}
ptr[i]=arr;
}
您需要手动为此指针分配内存:
int *arr = new int[k]{};
否则,您将获取循环作用域本地数组的地址,该数组在循环结束时死亡。
请注意,当您完成动态分配的内存时,您还需要手动删除它:
delete [] arr;
当然,如果您无法访问循环本地名称arr
,您可以通过ptr
删除内存。
此外,此构造:
cin >> k;
int arr[k];
是一个可变长度数组,在标准 C++ 中是不允许的。
相关文章:
- 添加到数组指针
- C++语法差异:二维和一维数组(指针算术)
- 数组指针表示法C++(移动数组时)
- 复制后删除原始数组指针将前 3 个字节设置为 0
- C++访问指向结构的指针中的类数组指针
- C++编译时使用 constexpr 字符数组指针分配静态数组?
- std::flush可以用于将对象指针转换为其封闭数组指针吗
- 创建<int>对整数数组指针的矢量引用 (C++)
- 将 2D 数组指针传递给 C++ 中的函数
- 创建指针是否超过非数组指针的末尾,而不是从 C++17 中的一元运算符和未定义的行为派生?
- 队列数组指针 (C++)
- C++数组指针上的删除操作
- 对于循环不循环和检测字符数组 [指针和字符数组]
- 如何初始化数组指针对象
- 如何正确传递 2D 数组指针作为参数
- 从数组指针中获取怪异的数字
- 初始化std :: unique_ptr作为原始数组指针的初始化
- 将结构数组指针从C#传递到C
- STD :: Sort将数组指针设置为NULL
- C++数组指针错误无法将“int*”转换为“int**”