#include <iostream>
using namespace std;
int main(void){
int a = 99;
char b+ = "xx";
cin >> a;
if(cin.fail()){
cout << "First Input Failure" << endl;
}
cin >> b;
if(cin.fail()){
cout << "Second Input Failure" << endl;
}
cout << "a : (" << a << ")" << endl;
cout << "b : (" << b << ")" << endl;
return 0;
}
계절학기듣는 학식충인데 오늘 처음으로 C++ 접했거든
1. 1 asdfghjkli 처럼 배열길이 넘겨서 입력해도 오류(오버플로) 안나는 이유는 뭐임?
2. 123 asdklfmklmalsm 처럼 막 입력하면 a는 이상한값 출력되고 b는 정상출력되는 이유는?
메모리 구조에 대해서 공부하시면 댑니다. - dc App
리터럴 스트링은 스택에 저장되는게 아닙니다. - dc App
b는 리터럴 스트링의 시작주소를 가지고있습니다 - dc App
아 리터럴은 상관없는 문제였네 - dc App
여튼 a변수는 b 입력 받을때 overwrite 되서 이상한거 나오는거 - dc App
C부터 공부해. 포인터쪽 가면 이해될거야 - dc App
오류 안나는 이유는 오류검사를 안하니까 안나지 - dc App
ㄴㅇㅇ 이거 하기 전에 포인터 빡시게 해서 오버플로 나는건 알겠음 근데 b는 10 넘겼는데도 정상출력이 되는데 어케된거임
출력하는 함수는 배열의 크기가 얼만지 좃도 신경 안써 - dc App
그냥 존나 순서대로 읽어서 출력하다가 0나오면 멈추는거야 - dc App
ㄴ아 그렇구나 고마워!