C언어를 공부하면서 대부분 포기하는 영역이 바로 포인터 개념이다. 저급레벨 언어로 기계어를 다룰 수 있는 C언어지만, 포인터는 직접적인 메모리의 주소를 건드릴 수 있는 강력한 언어다. 그만큼 이해하기 어렵고 프로그래밍 하는 과정에서 코드가 꼬일 확률이 높은 부분이다.
포인터 연산자
기억장치에 젖아된 데이터를 참조할 때, 식별자가 아닌 주소값으로 접근할 수 있는 연산자다. 복사된 데이터를 가공하는 것이 아니라 데이터 원본을 가공할 수 있게 된다. 주소값을 사용하기 때문에 포인터 연산이 가능하다. 데이터 식별자 앞에 &를 붙이면 해당 데이터의 주소값을 얻을 수 있다. 포인터 변수 아페 *를 붙이면 해당 주소의 데이터를 사용할 수 있게 되는 것이다.
포인터 변수
데이터를 저장하는 일반 변수와 달리 포인터 변수는 주소값을 저장한다. 타입이 달라도 크기가 동일하다. <참조할 데이터 타입>*<식별자>;의 형태로 사용한다. *<포인터변수>=<value>의 형태로 포인터 변수에 저장된 주소에 해당하는 위치에 값을 할당할 수 있다.
[참조할데이터타입] * 식별자;
[포인터 변수] = &[데이터변수]
*[포인터 변수] = [값]
배열과 포인터
배열 이름은 주소상수기 때문에 주소값 재할당이 불가능하다. 포인터 변수는 주소값 재할당이 가능하다. 포인터 연산 또한 가능하다. 배열주소를 포인터 변수에 할당하면 포인터 이름으로도 배열을 제어할 수 있다. 첨자를 활용하거나, 포인터 연산을 활용해 데이터에 접근할 수 있다.
참조에 의한 매개변수 전달(Call By Reference)
Call By Value는 함수에 인수를 전달하면 원본값이 복사되어 매개변수에 전달되는 개념이다. 반면 Call By Reference는 원본값을 변경하기 위해서 주소값과 포인터를 이용해서 함수를 정의한다. 주소값을 인수로 전달하고, 매개변수에 포인터 변수를 지정하는 것이다.
'Programming > 정보처리기사' 카테고리의 다른 글
정보처리기사 운영체제란 (0) | 2022.02.08 |
---|---|
정보처리기사 운영체제 명령어란 (0) | 2022.02.07 |
2022 정보처리기사 객체지향 프로그래밍 기술이란 (0) | 2022.02.06 |
정보처리기사 소프트웨어 개발 절차 이해하기 알고리즘이란? (0) | 2022.02.04 |
정보처리기사 SQL이란 DDL DML DCL 트랜젝션이란 (0) | 2022.02.04 |
정보처리기사 데이터베이스 논리 데이터 모델 품질 검증 하는 방법 (0) | 2022.02.04 |
댓글