메모리? RAM == Random Access memory
원하는 순서대로 메모리의 모든 부분에 엑세스가 가능하다.
이게 왜 유용하냐면은
16진수는 단위가 큰데 쉽게 2진수로도 변경이 가능하기 때문이다.
16진수로 AF62라는 수가 있을 때
바로 변경이 가능하다.
(이렇게 변경 가능한거 처음 앎)
비트 한개 + 비트 한개로는 4가지의 상태가 표현이 가능하다.
마찬가지로 메모리는 단위가 1바이트 인데 어떻게 -21억~21억까지표현이 가능하냐 하면은
256(1바이트) 256(1바이트) 256(1바이트) * 256(1바이트)
라서 가능함.
왜 j라는 객체의 크기는 10바이트가 아니라 12바이트 인가?
메모리는 데이터를 로드할 위치에 대한 기본 설정이 있어서 그렇고 컴퓨터 속도의 향상을 위해서이다.
빠르게 접근을 하기 위해서
두개의 포인터를 빼면은 3이 나온다.
이유는 당연하게도 3칸 떨어져있기 때문에.
바이트 자체는 같지만
이것을 정수로 해석하냐 실수로 해석을 하냐에 따라서 값이 다르게 나온다.
실수로 값을 볼때는 정상적인 420.0이지만
이를 정수로 reinterpret_cast를 통해 정수로 해석을 하면은 이상한 엄청 큰 값이 나온다.
권장되지 않는다.
이게 C-style cast이고
reinterpret_cast<> 이게 c++ style cast이다.
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=wkdghcjf1234&logNo=220210906503
Array 뒤집기
이런식으로 pl, pr을 swap하는 부분을 만들것인데
for문을 이렇게도 사용을 할 수 가 있다.
이런식으로 가능하다.
_putch 인자에 넣어주면 문자는 그대로 문자가 나옴.
정수를 넣으면 정수에 해당하는 아스키 문자값 출력한다
현재 13~14줄의 msg, msg2 char 타입 배열은 문자열은 저런 문자열을 복사 받은 객체이고
waifu라는 객체는 포인터이다.
ro 영역의 데이터를 가르키고 있으므로 수정이 안된다.
그래서 앞에 수정을 안(못)하기 때문에 const를 붙여주도록 하자.
문자를 입력받을 수 있는 함수를 구현해보도록 하자.
이렇게 Enter키가 ASCII로 13에 해당하기 때문에
_getch()함수로 입력을 받는데 != 13일 때까지 입력을 받아준다.
마지막에 null문자 넣어주어야한다.
근데 문제가 있음
계속 입력을 하고 Enter를 누르지 않는 경우
buffer크기를 초과할 경우 다른 메모리를 침범해서 데이터를 넣게 된다.
이런식으로 수정할 수가 있는데 마지막에 null값 넣기위해
buf + 1 < pEnd가 된다.
'0'이 ASCII로 48이기 때문에
매개변수로 들어온 녀석에서 '0'을빼주면 해당 수가 나온다.
파일의 위치는 source.cpp와 같이 한다.
그리고 이렇게하면은 제일 뒤에 이상한 y가 나오는데
이게 파일을 한번 읽기 실패하고 while문을 종료 했기 때문이다.
실제로 -1을을 출력을 하면 똑같이 나온다.
good()이 읽기 실패하면 -1을 반환한다는 것을 알 수 있다.
.seekg () ()안에다가 인덱스 번호를 넣어준다.
이러면은 첫번째 문자를 생략한다.
tellg : get포인터의 절대 위치를 가져오는 것이다.
이게 파일의 길이를 얻을 수 있는 방법이다.
open file stream ofstream
지정해주지 않으면 working directory로 읽는다.