교육 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"; //포인터 상수 -> stack에 존재.
char *str2[] = "world"; //포인터 변수 -> 문자열은 .text에 명령어로 존재
str2 = "hello"; // 가능할까? 가능하다. hello는 문자열의 주소이기 때문에. (포인터는 주소를 담는 변수.)
str1 = "world"; // 불가. str1은 포인터 '상수' 이기 때문에 상수에 상수는 넣을 수 없다.
//but strcpy(str1, "world");로 넣을 순 있다.
**문자열은 .text에 명령어로 존재 : ex)' h문자를 ~~에 두세요.' 같은 명령어
6. datatype 인지 판별법 : 캐스트(형변환 연산자)로 쓸 수 있으면 datatype이고 아니면 상수 같은 거.
7. a + b // + 같은 것을 operator라고 하고 a, b 같은 것을 operand 라고 한다.
8. ++연산자의 원리. => 3*i++; 의 경우 ++가 i를 가져가, 복사본을 떠서 리턴하고 원본은 따로 ++한다.
9. { } : braces 브레이스 -> 함수 내용(instruction)
( ) : parenthesis 페어랜시스 -> 함수(포인터 상수)
[ ] : bracket 브라켓 -> 배열 만듦(포인터 상수)
< > : square
10. 배열 a[4] = {10} // 나머지 a[1], a[2], a[3]을 0으로 초기화한다.
11. 컴퓨터 구조
12. 포인터, 배열, 참조 연산자와 사이즈에 관한 설명을 해주시면서 강사님께서 좌파 우파 란 형식을 들어 설명해주었다. 기존에 알고 있던 사실을 이해하는데 도움이 되기보다는 새로운 형식으로 새롭게 이해하기가 더 어려웠다.
13. &arr 은 배열 전체 주소
14. C언어의 개념이 불안정한 부분.
'임베디드 개발(before) > IoT 임베디드 SW 개발자 양성과정' 카테고리의 다른 글
내가 보려고 정리해둔 C언어 (0) | 2020.07.21 |
---|---|
[7일차] C언어 교육7-(2차원 배열, 포인터 배열 등) (1) | 2020.07.21 |
[5일차] C언어 교육5-(구조체, 링크드리스트, 공용체, 열거형, 마크다운) (0) | 2020.07.17 |
[4일차] C언어 교육4-(이중포인터, 포인터 배열, 배열 포인터, 동적할당함수) (0) | 2020.07.16 |
[3일차] C언어 교육3-(함수, 베열포인터, 문자열함수, 전역변수) (4) | 2020.07.15 |