노는게 제일 좋습니다.

11회차 : 포인터 연산 본문

C

11회차 : 포인터 연산

노는게 제일 좋습니다. 2017. 2. 18. 05:23

참고 자료 http://soen.kr/


1. *기호의 사용

a=3*4; 에서의 *는 곱하기 기호이다.

printf("%d",. *pi);  에서의 *는 포인터 연산자이다. 포인터 변수가 가리키는 주소에 기록된 데이터를 읽어온다.

int *pi; 에서의 *는 포인터를 선언할 때 사용하는 punctuator이다. 


2. 포인터의 타입

포인터는 주소를 값으로 가지지만 int, char와 같은 타입을 요구한다. 그 이유는 다음과 같다.

- 해당 주소로부터 시작하여 몇 비트나 읽을지, 어떤 방법으로 해석할지 알기 위해.

- 다음 대상체(변수)로 이동할 때 얼마나 이동해야 할지 알기 위해


3. 포인터의 증감연산

pi라는 포인터에 pi++ 와 같이 증감연산을 수행하면, 단순히 그 값을 1늘리지 않는다.

현재 가리키는 대상체 뒤에 따라오는 대상체를 가리키게 된다.


4. 포인터 연산

피연산자중에 포인터가 포함되어 있는 연산을 말한다. 일반적인 사칙연산과 다른 규칙을 적용한다.

- 포인터끼리 더하거나, 곱하거나, 나눌 수 없다. 쉬프트, 나머지 연산도 안된다.

- 포인터끼리 뺄 수는 있다. (거리라는 의미를 가지므로)

- 포인터에 정수를 더하거나 뺄 수 있다. 실수는 안된다.

이 때 더한다는 것은 1000번지에 1더해서 1001번지가 되는게 아니다.

1더하면 다음 대상체로, 2더하면 다음다음 대상체로 이동한다. 반대로 1 빼면 이전 대상체로, 2 빼면 이전이전 대상체로 이동한다.

- 같은 타입의 포인터끼리 대입하거나 비교할 수 있다.



'C' 카테고리의 다른 글

13회차 : 동적 메모리 할당, 이중 포인터  (0) 2017.02.20
12회차 : void형 포인터  (0) 2017.02.18
10회차 : 배열  (0) 2017.02.11
9회차 : 표준함수  (0) 2017.02.11
8회차 : 기억부류(스토리지 클래스)  (0) 2017.02.08
Comments