【发布时间】:2020-04-23 12:21:27
【问题描述】:
在 XCode 中它说:线程 1:EXC_BAD_ACCESS (code=1, address=0x3c000003e7)
#include <stdio.h>
#include "Assistance.h"
#define infity 999
using namespace std;
class WeightedDirGraph
{
public:
WeightedDirGraph();
WeightedDirGraph(int **g, int size);
~WeightedDirGraph();
void BellmanFord();
void Display();
protected:
int size;
int (*(*graph));
};
WeightedDirGraph::WeightedDirGraph(int **g, int s)
{
int a[s][s];
graph=(int **)new int *[s];
for(int i=0;i<s;++i)
{
for(int j=0;j<s;++j)
{
printf("%d ",*(*(g+i)+j)); //THIS IS THE LINE OF CODE THAT SEEMS TO BE WRONG
}
cout<<endl;
}
size=s;
}
int main()
{
char vexs[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', };
int m[7][7] =
{
{infity, 60, 50, 50, infity, infity, infity},
{infity, infity, infity, infity, -10, infity, infity},
{infity, -20, infity, infity, 10, infity, 70},
{infity, infity, -20, infity, infity, -10, infity},
{infity, infity, infity, infity, infity, infity, 30},
{infity, infity, infity, infity, infity, infity, 30},
{infity, infity, infity, infity, infity, infity, infity}
};
WeightedDirGraph *g=new WeightedDirGraph((int **)m,7);
}
我正在尝试传递一个指向二维数组的指针并初始化此 WeightedDirGraph。但我无法运行此代码。我认为当我使用指针时一定有某种错误,但我不知道问题是什么。有人能帮我吗?非常感谢。
【问题讨论】:
-
你不能那样做。数组不是指针,您正在做的是将
m[0]的第一个元素解释为地址,它们不是 -
那么你知道如何实现这个代码来初始化这个类吗?
-
您是否忘记分配“内部”元素?
a的目的是什么(这是无效的 C++)?为什么要搞得这么复杂? -
@molbdnilo
m是什么? -
@AsteroidsWithWings 在
main中声明。
标签: c++ arrays pointers data-structures