파라미터는 char *error이고 인수는 "머시기" 이건데 인수가 char여서 안된다고오류

조회수 698회

뜨는데 왜이러죠 책에 있는 거 고대로 한건데 ,,, 왜나만 안되냐고옥

include

include

inline void error(char *message){ printf("%s\n",message); exit(1); }

const int MAX_STACK_SIZE=20; class ArrayStack { int top; int data[MAX_STACK_SIZE]; public: ArrayStack(){top=-1;} ~ArrayStack(){} bool isEmpty(){return top==-1;} bool isFull(){return top==MAX_STACK_SIZE-1;}

void push(int e){
    if(isFull()) error ("스택포화에러");
    data[++top]=e;    }

int pop(){ if(isEmpty()) error ("스택공백에러"); return data[top--];

} int peek(){ if(isEmpty()) error ("스택공백에러"); return data[top]; } void display(){ printf("[스택 항목의 수 = %2d]==>", top+1); for(int i=0;i<=top;i++) printf("<%2d>",data[i]); printf("\n"); } };

1 답변

  • inline void error(char *message){ printf("%s\n",message); exit(1); }
    

    위의 코드를 아래처럼 바꾸시면 됩니다.

    inline void error(const char *message){ printf("%s\n",message); exit(1); }
    

    error("스택포화에러")처럼 문자열 리터럴을 함수의 인자로 넣어 사용할 경우, 문자열 리터럴은 const char*로 인식하는데 함수의 매개변수는 char*라서 매칭이 안되어 발생하는 에러입니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)