0
아래 정의 된대로 'sommet'구조체의 배열을 사용하려고합니다. 내 코드에서 구조체 배열에서 값에 액세스
typedef struct sommet {
double x;
double y;
char nom[100];
struct arete2* voisin;};
sommet* somtab = (sommet *) calloc(nbnoeud, sizeof(sommet));
if(somtab = NULL){
puts("Calloc error");
exit(1);
}
I는 각각 등가 인덱스 somtab 소자 (위한 X, Y, 및 공칭 값을 포함한다는 즉 somtab [0] .x를 =하여 Xtab, 세 개의 배열하여 Xtab, ytab 및 nomtab을 [0], somtab [1] .x를 =하여 Xtab [1] 등) 내 프로그램 다운 깨 somtab의 각 요소를 설정 와서 내가 할 적이 때 사용 포인터는 "check3"
puts("check1");
for(a=0; a<nbnoeud; a++){
printf("Read item %d; \t \t \t %s - (%lf, %lf). \n", a, nomtab[a], xtab[a], ytab[a]);
}
puts("check2");
for(a=0; a<nbnoeud; a++){
somtab[a].x = xtab[a];
somtab[a].y = ytab[a];
strcpy(somtab[a].nom, nomtab[a]);
}
puts("check3");
, 내가 원래의 코드로 다시 변환 제안, 컴파일에 실패. 확실히 calloc은 배열의 첫 번째 바이트의 주소를 반환해야하지만 개별 요소에 액세스 할 때 값으로 전달해야합니다. 오류 C2232 : '-> sommet :: x': 왼쪽 피연산자가 'struct'유형이고 '.'을 사용합니다. 오류 C2819 : 형식 'sommet'에 과부하 된 멤버가 없습니다. 'operator ->' – freewilly
위의 두 가지 변경 사항을 모두 적용한 후에도 'check3'전에 충돌이 발생합니다. – freewilly