언어/C
[C] 꼭 알아야 하는 포인터 개념
JJANG-JOON
2023. 8. 8. 15:16
반응형
포인터
C언어에서 포인터(Pointer)는 메모리 주소를 저장하는 변수이다.
이 주소는 다른 변수나 데이터 구조의 위치를 가리키는 역할을 하며 포인터를 사용하여 메모리의 특정 위치에 접근하거나 수정할 수 있고 C언어에서 메모리 관리와 동적 할당에 매-우 중요한 역할을 한다.
아래는 포인터 코드 예시이다.
#include <stdio.h>
int main() {
int num = 42; // 정수 변수 num을 선언하고 42로 초기화
int *ptr; // 정수 포인터 ptr을 선언
ptr = # // 포인터 ptr에 변수 num의 주소를 할당
printf("Value of num: %d\n", num); // num 변수의 값 출력
printf("Value of ptr: %p\n", ptr); // ptr 변수의 값(주소) 출력
printf("Value pointed by ptr: %d\n", *ptr); // ptr이 가리키는 주소의 값 출력
return 0;
}
이 코드에서 포인터 ptr은 정수 변수 num의 주소를 저장하고 있고 & 연산자를 사용하여 변수의 주소를 얻을 수 있다.
* 연산자를 사용하여 포인터가 가리키는 주소의 값을 역참조하여 얻을 수 있다.
다음으로, 포인터를 사용하여 메모리를 동적으로 할당하는 코드 예시이다.
#include <stdio.h>
#include <stdlib.h>
int main() {
int size = 5;
int *dynamicArray;
dynamicArray = (int *)malloc(size * sizeof(int)); // int형 요소를 가지는 동적 배열 할당
if (dynamicArray == NULL) {
printf("Memory allocation failed.\n");
return 1;
}
for (int i = 0; i < size; i++) {
dynamicArray[i] = i * 2; // 배열 요소에 값 할당
}
for (int i = 0; i < size; i++) {
printf("dynamicArray[%d] = %d\n", i, dynamicArray[i]); // 배열 요소 출력
}
free(dynamicArray); // 동적 할당된 메모리 해제
return 0;
}
이 코드에서 malloc() 함수를 사용하여 동적으로 메모리를 할당하고, free() 함수를 사용하여 할당된 메모리를 해제한다. malloc() 함수는 할당하고자 하는 메모리의 크기를 바이트 단위로 지정하며, 할당된 메모리는 포인터 변수에 저장된다.
이렇게 할당된 메모리를 배열처럼 사용하여 값을 저장하거나 읽을 수 있다.

반응형