코드가 아래와 같습니다. 의 *
'로 표시된 라인에, 나는 얻을 : 포인터에 대한 포인터의 동적으로 할당 된 "이중 배열을"초기화 컴팩트 한 방법구조체 배열의 배열을 초기화 할 때 '{'토큰 앞에 표현식이 필요합니다.
error: expected expression before ‘{’ token
rval.adj_list[0] = { {"B","C",3},{"B","A",2} };
있습니까?
struct node;
struct edge {
char *from;
char *to;
int weight;
};
struct digraph {
char **vertices;
struct edge **adj_list;
};
int main(int argc, char *argv[]) {
struct digraph rval;
int size = 5;
rval.vertices = malloc(size * sizeof(char*));
rval.adj_list = malloc(size * sizeof(struct edge*));
rval.vertices[0] = "A";
rval.adj_list[0] = { {"A","B",2},{"A","E",1} }; //********
rval.vertices[1] = "B";
rval.adj_list[1] = { {"B","C",3},{"B","A",2} }; //********
rval.vertices[2] = "C";
rval.vertices[3] = "D";
rval.vertices[4] = "E";
}
무엇인가'rval.vertices = malloc에 (크기 *의를 sizeof (숯불 *)를);'? 여기서'char *'는 필요한 포인터가 아니라 길이입니다. – herohuyongtao
'char *'는 포인터가 아니라 배열입니다. 배열은'= {data}; '로 초기화 될 수 있지만 할당되지는 않습니다. '= {data}'를 포인터에 할당하려고 시도하고 있는데, 이는 그것들을 모두 위반합니다. –