본문 바로가기

프로그래밍, 쉽게 배워보자

테이블/ 레코드/ 포인터

테이블(table)
전화번호부를 생각하시면 됩니다. 변수가 단 하나의 데이터값을 담기 위한 상자라면, 배열(array)은 서로 같은 종류의 데이터 묶음 여러개를 보관하는 상자들의 묶음이라 말씀드렸는데요,

테이블은 종류가 다르지만 관련된 데이터를 하나로 모은 묶음을 말합니다. 아래 그림이 테이블의 예인데요, 한 행당 한 명의 데이터묶음은 레코드라 부릅니다. 그리고 각각의 개별 정보는 멤버라고 합니다.

테이블 레코드 멤버

테이블 활용 방법
첫째, 테이블을 이름을 선언하고 둘째, 멤버명을 선언합니다. 셋째, 각 멤버에 넣는 데이터 종류(data type)을 선언합니다. 그러면 새로운 데이터형 설계도가 프로그램에 등록됩니다. 가령 테이블 이름을 baby라 지었다면, 프로그램에 새롭게 'baby형'이라는 데이터형의 설계도가 등록됩니다.

그리고 마지막으로 중요한 절차가 남았는데요, 위 단계로는 테이블에 값을 넣을 수 없습니다. 'baby형의 데이터를 처리하기 위해 dat라는 변수를 사용한다.'라고 선언해야 비로소 테이블에 값을 대입할 수 있습니다. 예를들어 dat.height = 168.0 처럼 말입니다.

adress
메모리는 각종 데이터나 데이터들의 묶음들을 담은 상자들이 모여 있는, 컴퓨터 내부 부품입니다. 이 메모리에는 각각 구역(?)마다 주소(adress)가 할당되어 있습니다.

앞서, 변수를 값(데이터)을 담는 상자라고 말씀드렸습니다. 예를 들어, '정수형 값을 넣기 위해 answer라는 이름의 변수를 사용한다.'라고 변수를 선언하면, 컴퓨터는 다음과 같은 일을 곧바로 실행합니다. '1. 정수형의 데이터를 넣기 위해 □□□□□라는 주소(adress)를 할당한다. 2. □□□□□라는 주소(adress)에 answer라는 이름을 붙인다.' 다시말해 변수를 선언하면 컴퓨터가 자동으로 메모리의 일부분인 주소(adress)를 할당하게 됩니다.

포인터 변수
포인터변수란 어떤 특정한 변수의 주소(adress)를 값으로 가진, 특별한 변수인데요.변수를 선언하면 메모리에 주소가 할당되면서 값을 보관할 일종의 상자가 만들어진다고 말씀드렸는데요,

만약 포인터변수에 변수 a 를 대입하면 변수 a에 할당된 메모리상의 주소(adress)값을 데이터로 보관하게 됩니다! 포인터는 주소를 이용하여 메모리상의 값을 '간접적'으로 참조할때 활용됩니다.

포인터변수 또한 변수의 하나이므로 '포인터 변수의 이름과 데이터종류'를 반드시 선언을 해야합니다.

'ptr이라는 이름으로 실수형의 포인터변수를 사용한다.'라고 선언하면, 컴퓨터 내부에서는 재빨리, '주소를 넣기 위해 □□□adress를 사용하라' 'adress □□□에 ptr이라 이름 붙여라.'라는 작업을 수행합니다. 이렇게 포인터변수를 선언해두면, 이후에 'ptr에 변수 a의 주소를 대입하시오.'와 같은 명령을 내릴 수 있습니다!

포인터에 대한 쉽고 명쾌한 설명은 yagom's blog, C <10>. 포인터 (1)개념잡[바로가기] 를 참고하시길!

참, 위 내용은 프로그래밍 기조에 관한 한 가장 쉬운 책, [기초튼튼 코드튼튼, 다함께 프로그래밍] (출판사 : 제이펍)을 참조했습니다!