노는게 제일 좋습니다.
11회차 : 포인터 연산 본문
참고 자료 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