hrming
[정보처리기사] 포인터 연산 본문
■ 포인터 연산
- 포인터 연산은 +, -, ++, -- 연산자를 사용하여 포인터 값을 증가/감소시키는 연산이다. (주소이므로 곱셈/나눗셈 불가 ❌)
( 예를 들어 크기가 4바이트인 int형 변수의 주소 100번지에 1을 더한 결과는 101이 아닌 104가 이며, 연산 결과 또한 주소 )
- 주소± ( 정수 * 주소를 구한 변수의 크기 )
#include <stdio.h>
int main(void)
{
char *ptr1 = NULL; // NULL 포인터
int *ptr2 = NULL; // NULL 포인터
double *ptr3 = NULL; // NULL 포인터
// 포인터 출력 시 %p 사용
printf("%p번지, %p번지, %p번지\n", (void*)ptr1, (void*)ptr2, (void*)ptr3);
// 포인터 증가
ptr1++;
ptr2++;
ptr3++;
printf("%p번지, %p번지, %p번지\n", (void*)ptr1, (void*)ptr2, (void*)ptr3);
return 0;
}
1. 세 포인터는 모두 NULL(즉, 0번지)로 초기화되어 있으므로, 첫 번째 출력은 세 포인터 모두 0x0을 출력
2. 각 포인터의 크기만큼 메모리 주소가 증가
- char *ptr1는 1바이트 증가 (보통 1 증가)
- int *ptr2는 4바이트 증가 (보통 4 증가)
- double *ptr3는 8바이트 증가 (보통 8 증가)
3. 결과
0x0번지, 0x0번지, 0x0번지
0x1번지, 0x4번지, 0x8번지
■ (void*) : void*는 C 언어에서 자료형이 없는 포인터를 의미
참고 및 출처 :
https://sejong-kr.libguides.com/c.php?g=942235&p=6822367
chatGPT
'기타 > 정보처리기사' 카테고리의 다른 글
[정보처리기사] Java 업캐스팅 문제 (0) | 2024.10.14 |
---|---|
[정보처리기사] C언어 포인터 (0) | 2024.09.29 |
[정보처리기사] C언어 구조체 (2) | 2024.09.29 |
[정보처리기사] 2024년 2회차 필기 합격 (0) | 2024.05.28 |
[정보처리기사] 데이터베이스 구축 - 병행제어 (0) | 2024.05.19 |
Comments