본문 바로가기

개발 노트237

CS50 - 포인터의 크기와 메모리의 크기의 관계는? 아래는 CS50 포인터 강의를 듣고 생각해보기 질문에 내가 작성한 댓글이다. 개념을 잊지 않도록 적어두자 생각해보기 - 포인터의 크기는 메모리의 크기와 어떤 관계가 있을까요? 나의 답: 주소값을 표현하는 방법은 32bit 63bit 등등 으로 운영체제마다 다르다. 포인터는 메모리의 주소값를 가리켜서 저장하기 때문에 이 주소값을 온전히 저장할 만큼의 크기를 가져야한다 때문에 운영체제에 따라 포인터의 크기는 다르게 정해진다고 할 수 있다 포인터 크기가 작으면 메모리 주소값을 모두 표현 못하므로 포인터로 표현 가능한 주소값의 크기를 넘지않는 메모리만 사용가능하다 . 더 큰 용량의 메모리를 사용하여도 그 메모리의 주소를 가리킬 숫자가 없으니 자원으로 쓸 수 없는것이다 하지만 포인터 크기가 크다면 메모리의 주소값.. 2022. 6. 6.
assemble, 어셈블리어 assemble 모으다, 짜맞추다, 조립하다, 집합하다 이전에 공부하며 컴파일 후에 컴파일 된 파일로 저장되었다가 기계어로 변환된다고 공부했었다 https://tokkic.tistory.com/6 parse 와 compile parse 와 compile parse 와 compile 을 영어사전에서 해석한 것으로 이해하면 쉽다 parse : (문장을 문법적으로) 분석하다 parsing 은 우리가 입력한 프로그래밍 언어를 의역없이 기계어로 바꾸는 과정이다. tokkic.tistory.com "컴파일(compile)은 parsing 된 것을 모아서 기계어 문법에 맞도록 순서를 배치하는 것이다" 라고 했었는데 컴파일 한 결과물도 바로 바이너리(2진수)로 저장되는 것이 아니었다! 난 그런줄 알았다! cpu를 제어.. 2022. 6. 4.
[c] 전위, 후위 연산자 사용 시 주의사항 하나의 변수를 수식이나 함수의 매개변수로 가져와서 한 식에서 두개 이상 사용할때 가져온 변수에 전위 / 후위 연산자를 사용시 에러가 생길 수 있다 잘못된 사용의 예시 ) sum = num + ++num + 1 add = num + num ++ + ++num Sum( i++, ++i ) // 위 코드처럼 하면 컴파일러마다 답이 다르다 c에서 작업순서를 정하지 않아서 컴파일러와 구동환경에 따라서 결과가 다르게 나올 수 있으므로 위와 같은 사용은 피해야 할 것이다 2022. 6. 3.
call by value, call by reference 값에 의한 전달(call by value) call by value 는 인수로 전달되는 변수가 가진 값을 함수 내의 매개변수에 복사하는 방식이다 이렇게 복사된 값으로 초기화된 매개변수는 인수로 전달된 변수와는 완전히 별개의 변수가 된다. 따라서 함수 내에서의 매개변수 조작은 인수로 전달되는 변수에 아무런 영향을 미치지 않는다 매개변수로 값을 넣으면 함수에서 인자로 쓰일순있으나 함수 밖의 변수에 값을 변화시키지 못한다는 말이다 참조에 의한 전달(call by reference) call by reference는 인수로 변수의 값을 전달하는 것이 아닌, 해당 변수의 주소값을 전달한다. 즉 함수의 매개변수에 인수로 전달된 변수의 원래 주소값을 저장하는 것이다. 이 방식을 사용하면 인수로 전달된 변수의 값을 함.. 2022. 6. 3.