Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如果我没有';我不知道数组大小_C - Fatal编程技术网

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>);
}