C language(c언어)

배열(Array) - 2 메모리에서의 배열

computerchild 2024. 10. 2. 15:00
728x90
반응형

오늘은 배열 2번째 시간 메모리에서 배열을 어떤식으로 처리하는지 알아보겠습니다. 

figure1

메모리(RAM)을 사진과 같이 표현을 합니다. 여러개의 방이 쭉 나열되어 있는 형태로. 이전 수업에서 int arr[10]를 예시로 했기에, 여기서 1개의 방은 4byte 크기인것이죠. 하지만 메모리 입장에서 위 1개의 방에 저 값만 들어있지는 않습니다.

프로그램을 실행하는데에는 어마어마한 갯수의 변수가 필요로 합니다. 그래서 사실적으로 메모리를 그려보면 figure2와 같습니다. 

figure2

즉, arr[0] 의 앞과 arr[9] 뒤에는 아무것도 없는 것이 아니라 여러 변수의 값들이 저장되어 있는거죠. )물론 저 중에는 arr[1]도 있고, arr[3]도 있고는 합니다) 그렇기에 허락되지 않은 변수가 메모리에 접근을 하려면 이를 막는 조치가 필요하죠. 그래서 Run-time error같은 에러기능을 통해 이를 해결합니다.

 

이제 본격적으로 배열을 알아봅시다

figure3
figure4

쉬운 예시이죠? arr 배열을 만들고, for문을 통해서 i + 1번째(i부터면 0부터 시작하니까, 1부터 시작하게끔) 는 2다 이런식으로 배열 안 전체 원소를 싹다 프린트 해보는 거죠. 그리고 여기서 명심할 것! 배열의 n번째 원소를 참조하려면 n-1로 입력해야 합니다! 기억합시다!

배열은 이처럼 동일한 데이터 타입의 여러 원소들을 표현하는데 코드를 쉽고 깔끔하게 작성하기 좋습니다. 반대로 배열을 사용치 않고, 동일한 결과를 내야한다면 어떻게 해야할까요? 

figure5

길이부터 다르죠? 쓸데없는 메모리 낭비, 더러운 코드. 코드를 짤려면 최대한 간결하고, 남들이 봐도 알아보기 쉽게 작성하는 것이 중요합니다. 또한 기능을 사용할 줄 아는거도 매우 중요하고요. figure5를 배열을 이용한다면? 

figure6

figure6처럼 전체 성적을 입력하고, 평균도 구하는 코드를 더 짧고 간결하게 구현이 가능하죠! 

 

자 오늘은 배열이 메모리상에서 어떤식으로 구현되는지, 그리고 배열의 기능을 좀더 알아보는 시간을 가졌습니다!

 

다음에는 3번째 배열 시간을 통해 배열에 대한 기능을 좀 더 알아보도록 하죠! 책에서 숙제를 하나 내줬습니다(전 숙제 싫어합니다)

 

figure6처럼 성적을 입력받고, 평균을 구하고, 개별 학생의 점수가 평균보다 낮다면 불합격, 높다면 합격이라는 문구도 출력이 되게 코드를 짜보는 숙제입니다!

 

짜신 코드를 댓글로 달아주세요~ 저도 배우고 싶습니다!

 

오늘은 여기까지! 감사합니다

728x90
반응형