C언어 5

[C 언어] [배열] 배열 기초

C 언어에서 많이 쓰는 자료구조 중 하나가 바로 배열이다. 모두가 아는 배열에 대한 이야기를 하려는건 아니니 끝까지 잘 읽어보길 추천드린다. 1. 배열 배열이란 같은 자료형의 묶음이라고 보면 된다. 마치 비엔나 소시지 같은 모양이라고 보면 된다. 같은 자료형이 묶여 있기 때문에 시작점을 알면 끝까지 연속적으로 이어져 있는 특징이 있다. 그런데!! 초보자가 많이 실수하는 부분이 여기에 있다. 사진처럼 배열은 비엔나 소시지 묶음으로만 이해하기 때문에 몇가지 문제가 발생하게 된다. 1 2 3 4 5 6 7 8 9 10 11 12 char arr[10]; void print_arr_size(char arr[]){ printf("array size : %d\n", sizeof(arr)); } int main(vo..

C언어 2023.01.13

[C언어] [컴파일러] [Embedded] 최적화와 오류에 대해

오늘은 Embedded환경에서 컴파일러의 역할과 최적화 오류에 대해 적어보려고 한다. 많은 Embedded 개발자가 항상 고민하는 부분은 메모리 사용량과 최적화, 시스템 속도 등일 것이다. 물론 최근에는 메모리 가격이 정말 많이 내려가서 메모리를 고려하지 않고도 Embedded Firmare를 만드는데 문제가 없긴 하다. 그래도 알아두어서 나쁠것은 없으니 한번 알아보도록 하자. 일반적으로 메모리를 많이 사용하면 속도를 올릴 수 있고, 메모리를 최적화 하려면 일부 속도를 포기해야 한다. 두개의 관계를 Trade-off 관계로 어느 것을 중점적으로 최적화 해야 할지 고민해야 하는 부분이다. 1. 개발자의 최적화 기법 개발자가 직접 최적화 코드를 고민하여 넣는 방법이다. 변수의 범위를 예측하여 최적화된 타입으..

Embedded 2023.01.11

[C언어] 데이터 타입 / 형 변환

오늘은 데이터 타입과 형 변환에 대해 적어보려고 한다. 먼저 아래 코드를 보자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 void main(void){ unsigned char c = 0xff; printf("%s\n", c==0xff?"true":"false"); } void main(void){ signed char c = 0xff; printf("%s\n", c==0xff?"true":"false"); } void main(void){ char c = 0xff; printf("%s\n", c==0xff?"true":"false"); } Colored by Color Scripter cs 3가지 케이스 모두 true가 나오지 않을 것이란 것은 감으로 알고 있지만 정확히 어떤 코드가 참..

C언어 2023.01.10

[C 언어] printf 파헤치기

C언어를 하는 사람치고 printf를 한번도 안쓴 사람은 없다. 그런데 printf를 제대로 아는 사람은 별로 없을 것이라 생각한다. 2가지 중요한 포인트가 있어 설명하려고 한다. 1. Format 문자열의 이해 먼저 아래 코드를 보면, 1 2 3 4 5 6 7 int main(void) { printf("Hello World!\n"); printf("Hello"" ""World!\n"); return 0; } Colored by Color Scripter cs 위 코드의 첫째줄은 흔히 사용하는 방식, 두번째 줄은 잘 사용하지 않는 방식이지만 정상적인 코드다. 물론 두줄의 코드 모두 "Hello World!"를 출력하게 된다. 이것에 대해 왜 이렇게 동작하는지 이해할 필요가 있다. printf의 원형을 ..

C언어 2023.01.08
728x90