C 언어 4

[C 언어] 포인터(Pointer)의 이해

Intro 많은 사람들이 C 언어를 어려워 하는 가장 큰 이유가 포인터이다. 포인터는 항상 메모리와 연관해서 설명되고 간접 참조하기 때문에 직관적으로 이해되지 않는 경우가 있기 때문이다. 그런데 실무에 들어가서 코딩하다보면 정작 포인터를 많이 안쓰게 되는 경우가 있다. 만드는 프로그램이 단순하거나 포인터의 동작에 대해 자신이 없는 경우 전역 변수로 처리하기 때문이다. 포인터란? 직접 개발을 하면서 깨달은 포인터의 의미를 쉽게 설명해 보려 한다. 포인터는 말 그대로 가르키는 것이다. 복잡하게 생각할 필요가 없다는 뜻이다. 누군가에게 길을 물어본다고 하면 아래 그림처럼 길을 알려주는 사람은 손가락으로 가르킬 것이다. 그럼 물어본 사람은 그 손가락을 따라 시선을 이동하게 되는데 바로 이것이 포인터이다. 무슨 ..

C언어 2023.02.25

[C 언어] [Embedded] 메모리 동적 할당에 대해 (1)

지난번 Embedded환경에 대한 간략한 설명과 함께 Endian mode와 컴파일러 최적화 오류 등에 대해 알아보았다. 오늘은 Firmware 개발자라면 누구나 쉽게 사용하고 있는 동적할당에 대해 몇가지 적어보려고 한다. 1. 동적할당이란? 먼저 동적할당이라는 개념부터 간단히 설명해보려 한다. 프로그래밍을 하다보면 데이터를 임시로 저장하거나 다른 이벤트의 인수로 데이터를 넘겨야 하는 경우가 있다. 데이터의 크기를 미리 알 수 없는 경우가 대부분이고 여러 조건에 따라 데이터의 크기와 유효범위가 달라질 수 있다. 아래 코드를 보자 (억지로 예제를 만든 것이니 참고만 하길) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #define SIZE 10 int func1(v..

Embedded 2023.01.17

[C 언어] 데이터 타입 2번째

지난번 데이터 타입에 관련된 내용은 사실상 형 변환(타입 변경)에 집중된 내용이었다. 그래서 데이터 타입에 관해 좀 더 집중적으로 적어보고자 이 포스팅을 준비했다. 다소 지루하거나 이미 알고 있는 내용일수도 있으나 꽤 중요한 부분이니 복습한다는 의미로 봐주길 바란다. 1. 정수형 데이터 타입의 종류 C언어에서 정의된 데이터 타입은 아래와 같다. (32bit 기준) type size(byte) min max char 1 0 127 signed char 1 -127 127 unsigned char 1 0 255 signed short 2 -32767 32767 unsigned short 2 0 65535 signed int 4 -2147483647 2147483647 unsigned int 4 0 42949..

C언어 2023.01.14

[C 언어] sizeof 연산자에 대하여

내가 firmware 개발을 처음 했을때 sizeof 연산자에 대해 잘못 알고 사용하여 디버깅을 했던 케이스가 생각나 이 포스팅을 하게 되었다. sizeof에 대해 제대로 알고 있는지 스스로 한번 점검해보는 기회가 되면 좋을 것 같다. 1. sizeof 의 정체 1 2 3 4 int a; printf("%d\n", sizeof(a)); printf("%d\n", sizeof a); cs sizeof를 함수로 잘못 알고 쓰는 사람들이 꽤 많다. 위의 코드에서 sizeof(a)로 사용하는 케이스가 많다보니 기존 코드를 재사용하여 습관적으로 사용하는 사람들은 라이브러리 함수로 오해를 한다. 그러나 sizeof는 ++ -- * 등과 같은 연산자이기 때문에 연산자 우선순위의 법칙에 영향을 받고 위 코드와 같이 (..

C언어 2023.01.11
728x90