int cin_void = 1;
char select_8 = '\0';
char remain = '\0';
while (cin_void)
{
cout << "\n --------- 메뉴 --------- \n";
cout << "1. 학생 성적 추가" << endl;
cout << "2. 전체 성적 보기" << endl;
cout << "w 프로그램 넘기기" << endl;
cout << "Q. 프로그램 종료" << endl;
cout << "---------------------- \n \n";
cout << "원하는 작업 번호를 선택해주세요.";
cin >> select_8;
const char* remain = & select_8;
switch (select_8)
{
/* 생략 */
case 'Q':
case 'q':
cout << "\n 프로그램을 종료합니다." << endl;
return 0;
default:
cout << "\n 잘못된 입력입니다. " << endl;
break;
}
}
// 몇개의실수를입력할지물어본다.
int size_16_QUIZ;
char quit_size;
cout << "실수 평균 이상 계산 프로그램.\n";
cout << "계속 하려면 a를, 무시하려면 q, Q를 누르세요.";
cin >> quit_size;
if ('q' == quit_size || 'Q' == quit_size || 'w' == remain)
{
cout << "\n 프로그램을 무시합니다.\n\n";
}
else /* 생략
위의 while 문의 select_8 값을 if 문에 전달해서 생략하고 싶은데..
while 문이 끝나면 값이 사라지니깐
const char* remain = & select_8; 포인터로 저장하고
아래 쪽에 if ('q' == quit_size || 'Q' == quit_size || 'w' == remain)
remain 값이 'w' 가 남을 줄 알았는데 왜 remain 값이 0으로 초기화 되는거예요?
ㅠ..
remain은 포인터인데 참조연산자를 붙여줘야 참조해서 값을 읽져
위쪽 remain과 while안에 있는 remain은 이름만 같을 뿐 완전 별개의 변수임. '변수 스코프' 관련된 부분을 찾아보면 감이 올듯. '전달해서 생략하고 싶다'이건 무슨 의미인지 잘 모르겠고.. 여튼 저 코드상으로 select_8은 while루프 끝난 후에도 값이 유효함. 여튼 변수 스코프 검색 ㄱㄱ