보통 C언어에서 가장 어려워하는 부분은 포인터이다.
이 포스팅은 어떻게 하면 포인터를 더 쉽게 이해할 수 있을까 에 대한 경험과 고민이 섞여 있다.
회사 후배가 프로젝트 소스 코드를 보고 덕지덕지 추가되어 있는 포인터 인자들을 보고 지레 겁을 먹고 포인터에 대한 질문을 종종 한다.
요즘엔 대학교에서는 학생들이 C언어를 그리 선호하지 않는 것 같다.
아무래도 Low Level 언어인 C는 개발자들에게 불친절하고 포인터라는 큰 벽이 있고, 특히 Computer Science(CS) 분야가 각광받으면서 파이썬 위주로 프로젝트를 진행하기 때문 아닐까 추측해본다.
(Low Level 언어 : 컴퓨터 중심 언어, 속도가 생명.
High Level 언어 : 사람 중심 언어, 개발은 Low Level 보다 간단하나 속도가 느림. )
나도 그리 큰 경력은 없지만 지금까지 본 개발자 후배들이 전부 JAVA나 파이썬으로 프로젝트는 많이 해봤으나, C 경험은 적었다.
Static, 지역변수, 전역변수, 매개변수, Function 등의 개념은 있지만, 포인터가 어렵다는 것만 기억하는 사람들이 많다.
하지만 생각보다 간단하다는 것을 알려주고 싶었다.
포인터에 대한 두려움이 존재하지만, 약간의 개발 지식이 있는 사람을 위한다.
이 글을 읽고 꼭 두 가지만 기억하면 된다고 생각한다. 이건 후배들에게도 항상 강조하는 말이다.
1. 변수 선언과 할당
2. *, & 연산자 종류
1. 변수 선언과 할당
#include <stdio.h>
int main()
{
int a; // a라는 변수명을 가지는 Int형 변수 선언, 메모리 공간에 값이 비어 있는 a가 생김.
a = 10; // 값이 비어 있는 a의 메모리에 10이라는 값이 할당됨.
printf("a = %d\n", a);
return 0;
}
간단한 예제를 든다.
포인터를 설명하기 이 전, 변수 선언과 할당에 대해 설명한다.
코드에 주석을 달아 두었다. 우선, 값을 할당하기 이 전에 "a" 라는 이름을 가지는 메모리 공간을 만들었다. int형을 선언했기 때문에 4byte 만큼을 사용하겠다는 컴퓨터와의 약속인 셈이다.
하지만 "a"라는 메모리 공간에는 비어 있다.
(모든 컴퓨터의 int형이 4byte는 아니지만, 일반적으론 4byte이다.) 나중에 이어 쓸 예정
'C, C++' 카테고리의 다른 글
2byte 정수를 1byte 배열로 나누기 (Feat. EEPROM) (1) | 2023.10.08 |
---|---|
[C, C++] #define을 사용하는 이유 (0) | 2022.10.05 |
[CPP] strcpy_s 사용 예제 (0) | 2021.08.23 |
[C] Call by Value VS Call by Reference (0) | 2021.08.16 |
[C] UNION 공용체와 Struct 구조체를 이용해 간단한 패킷 만들기 (1) | 2021.01.20 |