반응형
C언어에서의 포인터 개념
포인터란?
포인터는 메모리의 주소를 저장하는 변수입니다. 포인터를 사용하면 메모리를 효율적으로 관리하고, 다른 변수나 함수, 배열 등에 대한 레퍼런스를 쉽게 다룰 수 있습니다.
포인터의 선언
포인터를 선언할 때는 asterisk(*) 기호를 사용합니다. 예를 들어, 정수형 포인터와 문자형 포인터를 선언하는 방법은 다음과 같습니다.
int *int_ptr;
char *char_ptr;
주소 연산자와 간접 참조 연산자
- 주소 연산자
&
: 변수의 메모리 주소를 반환합니다. - 간접 참조 연산자
*
: 포인터가 가리키는 주소에 저장된 값을 반환합니다.
int a = 10;
int *p = &a;
printf("%d\n", *p); // 출력: 10
포인터와 배열
배열의 이름은 배열의 첫 번째 요소의 주소를 나타냅니다. 따라서 포인터를 사용하여 배열의 요소에 접근할 수 있습니다.
int arr[3] = {1, 2, 3};
int *p = arr;
printf("%d\n", *(p + 1)); // 출력: 2
포인터의 산술 연산
포인터는 산술 연산이 가능합니다. ++
, --
, +
, -
등의 연산자를 사용할 수 있으며, 이를 통해 메모리 주소를 쉽게 탐색할 수 있습니다.
함수와 포인터
포인터를 매개변수로 사용하거나 반환 값으로 사용할 수 있습니다. 이를 통해 함수 외부의 변수를 수정하거나, 동적으로 할당된 메모리의 주소를 반환할 수 있습니다.
void modifyValue(int *p) {
*p = 20;
}
int main() {
int a = 10;
modifyValue(&a);
printf("%d\n", a); // 출력: 20
}
포인터의 주의사항
- 초기화되지 않은 포인터를 사용하면 불명확한 동작이 발생할 수 있습니다.
- 메모리 누수: 동적으로 할당한 메모리는 반드시
free
함수를 사용하여 해제해야 합니다.
포인터는 C언어에서 매우 중요한 개념입니다. 메모리를 직접 관리할 수 있는 능력은 C언어가 시스템 프로그래밍, 임베디드 프로그래밍 등에서 자주 사용되는 이유 중 하나입니다. 따라서 포인터를 정확하게 이해하고 사용할 줄 아는 것은 중요합니다.
반응형
'온라인 멘토와 함께하는 공부 > 인공지능' 카테고리의 다른 글
[C언어] 포인터 배열과 배열 포인터의 차이 (60) | 2023.10.26 |
---|---|
[C언어] C언어에서의 배열 (59) | 2023.10.25 |
[C언어] C언어 개발 환경 설정 방법 (70) | 2023.10.23 |
[C언어] 학습을 시작하며 (66) | 2023.10.22 |
마이크로소프트 엣지에서 ChatGPT 로그인이 막히면서 '쿠키'를 확인하라는데 무슨 일입니까? (46) | 2023.09.04 |