201303/ 포인터 주소 값의 연산. 함수의 원형. 함수의 정의

2013. 4. 3. 16:59프로그래밍/C언어 TIP

 포인트 주소 값의 연산

주소 영역에 따라 포인트 크기가 결정되고 주소 영역은 버스의 크기에 따라 결정된다. 그러므로 버스의 크기가 곧 포인트 크기가 되는 것이다.


CPU와 Memory를 내부적으로 살펴보면, 위의 그림과 같이 레지스터와 메모리에 존재하는 관리자가 서로 연결 되어 있는 것을 알 수 있다.

주소 10번지에 1byte 100을 넣어보자.

 


 숫자를 바로 보내 지는게 아니라 전기적으로 변환하여 보내지게 된다.

0 0V, 1 5V (CPU에서 Memory로 보내지는 전기적 신호)

내부적으로 CPU와 Memory사이에서 이렇게 많은 일을 수행하게 되는 것이다. 전자쪽으로 들어가면 더욱 복잡한 일들은 하겠지만, 그냥 이런 일들이 일어난다는 것만 알고 있자. 깊이 들어가면 어지럽다.

 다음 그림을 통해 주소값에 플러스(+)는 어떻게 되는지를 확인한다. 


주소값에 플러스(+)는 가리키는 type(자료형) 만큼 더해진다. 그림에서 보이는 것처럼 

char형의 c포인트는 가리키는 char가 1byte이므로, 1만큼 증가했고, 
short형의 s포인트는 가리키는 short가 2byte이므로, 2만큼 증가했다. 
int형의 i포인트 역시 가리키는 int가 4byte이므로, 4만큼 주소값이 증가한다.

 
주소값이 얼마인지 스스로 풀어보자. 

CPU와 친해지려면 주소값과 친해져야 하고 주소값과 친해지려면 포인트와 친해져야 한다. 
이 문제를 풀었다면 포인트에 대해 조금은 이해를 하고 있는 거 같다.

  함수 

함수의 이름도 변수의 이름처럼 그 기능에 부합하는 이름을 사용하여 프로그램의 이해를 쉽게 하도록 해야 하고 하나의 함수는 최소한의 독립적인 기능을 수행하도록 작성하는 것이 좋다.

 ◦ 함수의 원형  


세미콜론(;)이 뒤에 붙게 되면 함수가 선언이 되어 있다고 얘기하고 
중괄호({})가 붙게 되면 함수가 정의 되어 있다고 얘기한다. 
선언과 정의는 다른 의미를 가지고 있다.

 ◦ 함수의 정의 
함수를 직접 만들어 사용해 보자. 


반환자료형으로 void를 사용하였고 이름은 임의로 hi라고 지정해주었다. 소스를 만들어 어떻게 동작하고 함수가 호출되는지를 확인한다. 

함수의 원형을 반드시 main앞에 써줘야 정의된 함수를 사용할 수 있다. 함수 호출은 이름과 괄호를 써주고 세미콜론(;)을 붙혀 주면 반복적으로 사용이 가능하다.

어떤 결과가 나오는지 직접 확인해보자.