我有以下代碼:正確的方法來訪問一個結構指針
typedef struct AdjMatrix
{
int nodes;
int **adjMat;
} graph;
typedef struct Edge
{
int from,to,weight;
}Edge;
int main(){
...
graph *g=(graph *)malloc(sizeof(graph));
g-> adjMat = (int **)malloc(sizeof(int *) * vertices);
for(i = 0; i < vertices; i++){
g->adjMat[i] = (int *)malloc(sizeof(int) * vertices);
}
...
Edge *E = (Edge *)malloc(sizeof(Edge) * maxEdges);
int nEdges = 0;
for(i = 0; i < g->nodes ; i++){
for(j= 0; j< g->nodes; j++){
if(i <= j){
printf("%d\t%d\t%d\t\n",i,j,g->adjMat[i][j]);
E[nEdges].from = i;
E[nEdges].to = j;
E[nEdges].weight = g->adjMat[i][j];
nEdges++;
}
else
break;
}
}
}
正如你可以看到,我通過訪問圖g中的元素 - 和邊E的元素「>」,「」。我不明白爲什麼編譯器會拋出一個錯誤,如果我通過「。」訪問圖g的元素。或通過「 - >」邊緣E的元素?請解釋
非常感謝大家的解釋。我現在完全清楚發生了什麼:) – user1439690