2011-01-27 14 views
2

컴파일 할 때마다 다음 오류가 발생합니다.이 오류는 모든 것이 fine.have 코드의 일부로 표시됩니다.오류가 발생했습니다.

오류 : 첨자 값도 배열이나 포인터

main() 
{ 
int clf_cnt,key; 
struct classifier clsf,*clsf_ptr; 
int choice; 
printf("Creation of B tree for node %d\n",M); 
while(1) 
{ 
    printf("1.Insert\n"); 
    printf("2.Display\n"); 
    printf("3.Quit\n"); 
    printf("Enter your choice : "); 
    scanf("%d",&choice); 
    switch(choice) 
      { 

        case 1: 
          printf("Enter the rules : "); 
          for(clf_cnt = 0;clf_cnt < M;clf_cnt++) 
            { 
          error line:  clsf_ptr = &clsf[clf_cnt]; 

입니다하지만 난 당신이 인덱스하려고하는

답변

2

구조의 배열에 데이터를 삽입하는 방법을 다음

struct node 
    { 
    int n; 
    int keys[M-1]; 
    struct node *p[M]; 
    struct classifier clsf[M-1]; 
    }*root=NULL; 

를 선언 한 a struct 여기 : clsf[clf_cnt]. 이 방법으로 구조체를 인덱싱 할 수 없으며 배열과 포인터 만 인덱싱 할 수 있습니다.

예 : clsf_ptr[clf_cnt] 대신 컴파일러를 행복하게 만들 수 있습니다. :-) 그러나, 사용하기 전에 실제로 포인터를 초기화하여 struct classifier 인스턴스의 기존 배열을 가리켜 야합니다. 그렇지 않으면 정의되지 않은 동작이 발생합니다 (즉, 프로그램이 중단 될 가능성이 큽니다).

1

문제는 clsf[clf_cnt]입니다. clsf은 포인터도 배열도 아닙니다.

1

clsf은 배열이나 포인터가 아닌 struct classifier 유형이므로 정확한 컴파일 내용을 말해줍니다. C에서 struct[] 연산자를 사용할 수 없습니다.

0

문제가되는 행이 clsf_ptr[clf_cnt];이어야한다고 생각합니다.

1

clsf은 하나의 struct으로 선언되지만 배열 인 것으로 간주합니다.

관련 문제