프로그래밍 언어/c

포인터와 함수 그리고 void형 포인터

손 쓰는 개발자 2021. 1. 7. 21:53

진도 나가기에 바빠서 블로그에 글을 쓰지 한참 되었다. 아마?

오늘은 구조체와 공용체를 다루기 바로 직전에 배우는 포인터와 함수 그리고 void형 포인터에 대해 아주 간략하게 정리해보려 한다. 

1. 함수의 호출은 값에 의한 호출과 주소에 의한 호출로 나뉜다. 값에 의한 호출은 변수값을 복사해서 이용하기 때문에 변경하지 못하지만 주소를 이용한 간접접근 방식은 값을 변경 가능하다는 점이 핵심이다. 값을 변경 가능 하다는 점 말고 실행하는데 필요한 시간과 메모리 공간을 줄일 수 있다는 점에서 포인터에 의한 호출이 필요하다. 이때 1차원 배열은 포인터 변수로 접근하며 2차원 배열은 배열 포인터로 접근한다. 

2. 이전 단원 까지의 함수의 반환 형태는 대부분 값이었다. 만약 배열이나 문자열을 반환해야 할 때에는 값을 반환하는 방식은 적절치 않다. 예상하겠지만 주소를 반환하게 된다. 이때 지역 변수의 주소를 반환하면 경고가 발생한다는 점을 유의해서 static, 즉 정적 변수를 잘 활용하여야 한다.

3. 비슷하게 이전 단원 까지는 main 함수의 인자가 없는 경우만 다뤘는데 인자가 있을 때의 양상을 살펴보자. 중요한 인자 2가지를 살펴보자. int argc는 문자열의 수를 저장하는 변수이며 char* argv는 문자열의 첫번째 주소를 char 형으로 저장한다. 

4. void형 포인터는 다양한 자료형의 주소를 저장 할 수 있는 대신 주소만 저장 가능하다는 한계가 있다. 값을 참조하려면 강제 형변환을 해야 한다. 

//전과 자소서 제출 마감기간 1월 15일까지 내가 c언어 1회독을 과연 할 수 있을까?