指向数组的指针的c++指针
C++ pointer of pointers to arrays
我有一点问题与创建数组的数组,或数组指针的数组更精确,我似乎已经消除了所有的错误,因为程序编译只是很好(我使用g++)然而,当我试图运行它它给出了一个"核心转储"消息。
这是我的代码?
#include<iostream>
#include<ctime>
#include<cstdlib>
using namespace std;
void create_array(int **pp)
{
pp = new int*[4];
for (int i = 0; i<4; i++)
{
pp[i] = new int[4];
}
}
int main()
{
srand(time(NULL));
int **pp;
create_array(pp);
for (int x = 0; x<4; x++)
{
for(int y = 0; y<4; y++)
{
pp[x][y] = rand()%9;
}
}
cout << pp[3][2] << endl;
return 0;
}
void create_array(int **pp)
{
pp = new int*[4];
for (int i = 0; i<4; i++)
{
pp[i] = new int[4];
}
}
pp
是指向int
的指针数组,但是它是按值传递的。因此main
中的原调用方pp
不受影响。调用create_array
函数后,main
中的pp
仍然是uninitialized
。当你给它赋值的时候。这将导致核心转储。
尝试在c++中使用vector <vector<int>>
。
或尝试:
void create_array(int **&pp)
{ //^^
pp = new int*[4];
for (int i = 0; i<4; i++)
{
pp[i] = new int[4];
}
}
有了上面的改变,如果你试图在我的机器上打印整个矩阵,它输出如下:
8 7 6 3
3 5 6 4
3 8 7 6
0 0 5 8
如果您不想初始化指针,请使用引用。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- 调整大小后指向元素值的指针unordered_map有效?
- 正在将指针转换为范围
- 使用指向成员的指针将成员函数作为参数传递
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错