C 如果我没有';我不知道数组大小
假设我们在结构C 如果我没有';我不知道数组大小,c,C,假设我们在结构Graph中有一个名为int*weights[]的指针数组,并对其进行初始化 int CreateGraph(Graph *G, int vexs){ G->n = vexs; for(int i = 0; i < G->n; i++){ G->weights[i] = (int*)malloc(sizeof(int)*G->n); } for(int i = 0; i < G->n; i++
Graph
中有一个名为int*weights[]
的指针数组,并对其进行初始化
int CreateGraph(Graph *G, int vexs){
G->n = vexs;
for(int i = 0; i < G->n; i++){
G->weights[i] = (int*)malloc(sizeof(int)*G->n);
}
for(int i = 0; i < G->n; i++){
for (int j = 0; j<G->n; j++) {
G->weights[i][j] = j;
}
}
return 1;//just for test
}
它崩溃了,xcode说EXC_访问错误(代码=1,地址=0x0),但我有另一个工作版本的function show
void success_show(Graph *G)
图表
问题:
- 在这里使用Graph*G和Graph G作为函数参数有什么区别
show(Graph G)success\u show(Graph*G)
- 使用
G->weights[i]=(int*)malloc(sizeof(int)*G->n)初始化指针数组可以吗代码>
G->weights
分配内存
G->weights = (int**) malloc(sizeof(int*)*G->n);
然后为每个指针元素分配内存
for(i=0; i<G->n; i++)
{
G->weights[i] = (int*) malloc(sizeof(int)*<entersize>);
}
(i=0;in;i++)的
{
G->weights[i]=(int*)malloc(sizeof(int)*);
}
您必须为G->weights
分配内存
G->weights = (int**) malloc(sizeof(int*)*G->n);
然后为每个指针元素分配内存
for(i=0; i<G->n; i++)
{
G->weights[i] = (int*) malloc(sizeof(int)*<entersize>);
}
(i=0;in;i++)的
{
G->weights[i]=(int*)malloc(sizeof(int)*);
}
请告诉我们崩溃发生在哪里,问题中不清楚。您需要阅读有关指针的章节。您显然不知道这个主题,因此问题太广泛了。您忘记了在(int j=0;G.n;j++)中限制迭代次数。应该是这样的:for(int j=0;j
崩溃在printf(“%d”,G.weights[i][j])
方法show
中请告诉我们崩溃发生在哪里,问题中不清楚。您需要阅读有关指针的章节。您显然不知道这个主题,因此问题太广泛了。您忘记了在(int j=0;G.n;j++)中限制迭代次数。应该是这样的:for(int j=0;j
崩溃在printf(“%d”,G.weights[i][j])
方法中的show
请参见
for(i=0; i<G->n; i++)
{
G->weights[i] = (int*) malloc(sizeof(int)*<entersize>);
}