C언어 4

[C언어] C언어 함수 포인터(Function Pointer) 정리

C언어의 고급 기능 중 하나인 함수 포인터(Function Pointer)는, 함수를 포인터로 가리켜서 함수를 동적으로 선택하거나 전달할 수 있는 강력한 도구입니다.처음 접하면 굉장히 생소하고 복잡해 보이지만, 원리를 알고 나면 아주 유용하게 사용할 수 있습니다. 특히 콜백 함수, 함수 배열, 전략 패턴 구현 등에서 많이 사용됩니다. 📌 함수도 메모리에 저장된다?모든 함수도 메모리 어딘가에 저장됩니다. 따라서 함수의 주소를 변수에 저장할 수 있고, 이 변수를 통해 함수를 호출할 수 있습니다.int add(int a, int b) { return a + b;}위 함수는 add라는 이름을 가지고 있지만, 사실 add는 함수의 시작 주소를 의미합니다. 따라서 아래와 같은 표현도 가능합니다.int (*f..

C 2025.03.26

[C언어] 이중 포인터(Double Pointer) 정리

C언어에서 포인터도 어렵지만, 그 위에 포인터를 또 가리키는 이중 포인터(double pointer)는 진입 장벽이 훨씬 높습니다. 하지만 이중 포인터는 고급 C프로그래밍, 동적 메모리 할당, 다차원 배열 처리, 함수 포인터 제어 등에서 핵심 역할을 하므로 반드시 제대로 알고 넘어가야 합니다. 📌 이중 포인터란?이중 포인터는 말 그대로 포인터를 가리키는 포인터입니다.int a = 100;int *p = &a;int **pp = &p;a: 일반 변수p: a의 주소를 저장하는 포인터pp: p의 주소를 저장하는 이중 포인터이 관계를 메모리로 표현하면 다음과 같아요 [ a ] = 100 → 변수[ p ] = &a → 포인터[ pp ] = &p → 이중 포인터  📌..

C 2025.03.26

[C언어] 배열과 포인터의 관계

C언어를 배우다 보면 배열과 포인터가 비슷한 것처럼 느껴질 때가 많습니다. 실제로 이 둘은 밀접한 관련이 있지만, 동일한 개념은 아닙니다. 오늘은 그 차이와 관계를 정리해볼게요. 📌 배열이란?배열은 같은 자료형의 변수들을 연속된 메모리 공간에 저장하는 자료구조입니다.int arr[5] = {1, 2, 3, 4, 5};arr[0]은 배열의 첫 번째 요소메모리는 연속적으로 배치됨배열 이름 arr은 배열의 **시작 주소(= 첫 요소의 주소)**를 나타냄📌 포인터란?포인터는 메모리 주소를 저장하는 변수입니다.int a = 10;int *p = &a;p는 변수 a의 주소를 가짐*p는 p가 가리키는 주소에 있는 값을 의미함 (즉, a)📌 배열과 포인터는 어떻게 연결되어 있을까?int arr[3] = {10, ..

C 2025.03.26

[C언어] 포인터(Pointer) - 정보처리기사 실기 준비

정보처리기사 실기 준비하면서 C언어의 개념을 간단하게 잡기 위해 공부하고 있는데요. 자료구조나 연산자 등은 자바와 비슷한 맥락이기 때문에 저는 바로 포인터 개념부터 시작했습니다.C언어를 배우다 보면 가장 많이 헷갈리는 개념 중 하나가 바로 포인터(pointer)입니다. 하지만 포인터는 C언어의 핵심이자 강력한 기능이기 때문에 반드시 이해하고 넘어가야 합니다. 이 글에서는 포인터의 개념부터 활용까지 쉽게 설명해드릴게요. 📌 포인터란?포인터는 변수의 메모리 주소를 저장하는 변수입니다. 일반적인 변수는 값을 저장하지만, 포인터는 "어디에 저장되어 있는가"를 기억합니다.int a = 10; // 일반 변수int *p = &a; // 포인터 변수, a의 주소를 저장 *p는 p가 가리키는 ..

C 2025.03.25