임베디드 개발(before) 36

[6일차] C언어 교육6-(새롭게 진도 나감. ~포인터, 배열)

교육 2주 차가 시작됐다. 오늘부터 일주일간 새로운 강사님에게 임베디드 C 프로그래밍 수업을 배우는 날이다. 임베디드 C 프로그래밍이지만 그냥 C언어다. C언어 진도를 다시 처음부터 나갔다. 1. @head 부분 : 함수에 사용될 각종 변수와 배열등을 선언한 부분, 2. @body 부분 : 선언된 각종 변수와 배열등이 사용되어 코드가 진행되는 부분. (과거 C 버전에서는 body부분에서 변수 정의를 할 수 없었지만 최근 버전에는 가능해졌다. but 그로 인해 포인터에서 문제가 발생하는 경우가 있다.) 3. 변수 a=10; 왼쪽 부분 : Lvalue = 오른쪽 부분 : Rvalue 4. int = double -> loss 발생. 5. char str1[] = "hello"; //포인터 상수 -> stac..

[5일차] C언어 교육5-(구조체, 링크드리스트, 공용체, 열거형, 마크다운)

C언어 마지막 날. 다음 주부터는 새로운 강사님과 임베디드 C 프로그래밍을 배우게 된다. 이제 많이 모르는 개념들 위주로 진도를 나가는데 너무 빠르게 나가는 탓에 공부할 거리만 많아지는 느낌이다. - 구조체 1. 구조체 크기에 대해 공부. -> 구조체는 가장 큰 멤버의 크기로 따라감. typedef _Student{ int num; //4byte double grade; //8byte }student; 이런 구조체 만들면 이런식으로 16byte의 크기가 된다는 말이다! 2. 구조체는 멤버의 순서에 따라 구조체 전체의 크기가 달라질 수 있다! #pragma pack(1) 을 사용하면 구조체의 크기는 모든 멤버의 크기를 더한 것과 같아진다 => 패딩바이트를 없애줘서 메모리를 최소화시킨다. 데이터를 읽고 쓰는..

[4일차] C언어 교육4-(이중포인터, 포인터 배열, 배열 포인터, 동적할당함수)

확실히 고급편으로 넘어가고부터 내용이 어려워졌다.. 1. static 전역변수 -> 다른 소스에서 접근 불가 2. static 지역변수 -> 전역변수의 특성도 갖게 됨. (초기화 1번만 된다.) 3. 함수 static -> 소프트웨어를 모듈화 할 수 있다. 4. 레지스터 변수 -> 변수가 stack에 저장되지 않고 가장 빠른 레지스터에 저장된다. 그리고 중괄호(함수) 끝날 때까지 레지스터에 존재. (메모리에 있는 것이 아니기 때문에 변수의 주소를 구할 수 없다. and 개수가 별로 없다.) 5. ARM은 RISC 프로세스 - RISC? >>> 6. call by value 와 call by reference의 차이. 포인터를 이용해 주소로 접근하는 후자 방식은 변수의 데이터를 바꿀 수 있다. 7. 크기가..

[3일차] C언어 교육3-(함수, 베열포인터, 문자열함수, 전역변수)

오늘 강의 시작은 강사님의 당부의 말로 시작되었다. "너무 한 번에 다 알려고 조급해하지 마세요~ 나중에 다 이해 가능합니다. 다만 주의사항! 손으로 직접 해봐야 합니다! 단순히 따라 하는 것이 아닌 안 보고 코드를 직접 짜 봐야 합니다! 만고불변의 법칙은 손가락이 기억한다는 것입니다!" 뭔가 대충 나가는 듯하면서도 궁금했던 점이나 헷갈렷던 점들은 잘 짚어주신다. 1. 포인터 기호 " * " : '간접참조연산자' 라고한다. 2. 다시 한번! 포인터는 주소를 저장하는 변수일뿐입니다! 3. 32bit 머신에서 주소 값은 모두 4byte이다!! 따라서 char*, int*, double* 포인터의 크기 모두 4byte이다! '주소 값'이기 때문에. 4. 포인터의 장점 - 매개변수를 통해 주소로 변수에 접근하기..

[2일차] C언어 교육2-(조건문, 반복문, 함수, 배열, 포인터)

1. 16진수와 2진수의 진수 변환이 빨라야 한다!!! 특히 A~F!! 나중에 레지스터 건들 때 많이 생각하게 됨! 2. a != b ☞ 다르면 1, 같으면 0 3. 훌륭한 코더들은 연산자를 남발하지 않는다! -> 가독성이 so bad, 쓸데없는 괄호 치지 마라! 4. switch문과 if문에 대해 배움. 5. while문 -> 조건 평가 먼저 / do~while문 -> 실행 후 조건 판별. 6. 이중반복문 7. 함수도 진도 나감.. 개념보단 예제 실습 위주로, 함수의 사용 이유 -> "기능의 재사용"을 위해! 8. warning을 해결해야 Good Coder! 특히 오픈할 소스라면 더더욱 9. ( )보다 (void)로 명시하는 습관! -> 함수 선언 시 void func () 와 void func (v..

[1일차] C언어 교육

간단한 OT이후, C언어에 대해 가벼운 설명으로 수업이 시작됐다. 첫날이라 굉장히 천천히, 그리고 띄엄띄엄 나갔다. 강사님이 잘 못하는 사람들은 처음부터 빡씨게 나가면 금방 흥미잃고 나가떨어진다고 하여 그렇게 진도를 나가셨다. 1. 비주얼 스튜디오 활용한 컴파일러 환경 설정 2. 템플렛 만들고 저장하는 법 (입력할 양을 줄일 수 있다.) 3. 프로그램이 메모리에 올라오고, CPU는 메모리에 올라온 프로그램을 읽어들인다. 4. 변수 선언 & 초기화 방법 (+자료형의 종류) 5. printf, scanf에 대해 6. 관계연산자, 비트연산자에 대해 배움. * 개인적인 공부 목적으로 게시한 글이기에 내용에 잘못된 정보가 있을 수 있습니다.