<2021년 07월 06일, 화>
선행처리
- #define
- #if ~ #endif
- #elif ~ #endif
- #ifdef ~ #endif
배열에서 char형을 계속 쓰는 이유
서식문자
- %03d : 필드폭을 3칸 확보하고, 오른쪽 정렬해서 출력해라. 남은 자리는 0으로 채움
- %-3d : 필드폭을 3칸 확보하고, 왼쪽 정렬해서 출력해라
- %+3d : 필드폭을 3칸 확보하고, 오른쪽 정렬해서 출력해라. 양수는 +부호, 음수는 -부호를 넣어서!
<2021년 07월 07일, 수>
Git 처음 써봤음
참고자료 : https://pks2974.medium.com/%EC%9E%90%EC%A3%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EA%B8%B0%EC%B4%88-git-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC%ED%95%98%EA%B8%B0-533b3689db81
- 초간단 순서 (init -> remote 할것 추가 -> status 확인 -> add 로 추가 -> commit 하기 -> push로 보내기 )
- git 주소 : https://github.com/psh4204
- add .(현재여기) 원격저장소에 올릴거 추가하기
- status로 확인
- comit –m “add 올릴파일”
- push 현재원격저장소(브랜치) 올릴브랜치(master)
- 강제 push : git push origin +master
구조체와 Alignment
- 구조체는 데이터 위치가 너무 중요함. 그냥 C는 메모리관련해서 다 중요
-> 구조체를 배열처럼도 사용가능함
-> 타입캐스팅 잘해야함 (type)
-구조체 Alignment
-> 구조체에 멤버변수의 타입과 순서에 따라 구조체 크기가 천차만별
-> Packing을 통해 일정하게 다듬기 가능
#pragma pack(n) : 모든 구조체의 변수의 시작크기 n이 된다.
#pragma pack(push, n) ~ #pragma(pop) : 해당 ~구조체만의 변수의 최소크기는 n이 된다. (n은 1,2,4,8 등 데이터타입 크기로 지정 가능)
함수
- void 형은 타입캐스팅 사용하는것 추천
- extern 뜻 : 밖에 있을거야! 표시 (workspace 내에)
- static 뜻 : 프로그램 꺼질때 까지 살아있어야 해! 표시
네임 맹글링
#ifdef __cplusplus // 네임 맹글링 : C++에서 C코드를 C코드로 쓸수있게 하는 것 {
extern "C" {
#endif // __cplusplus
// 해당 코드 입력
#ifdef __cplusplus // 네임 맹글링 : C++에서 C코드를 C코드로 쓸수있게 하는 것 }
}
#endif // __cplusplus
<2021년07월08일, 목>
- 배열 포인터와 포인터 배열
- 배열 포인터 : 배열을 포인터화 해서 쓰는 것
(*ptr) = ptr[0] = ptr
- 선언할땐 제대로 해줘야함
- 포인터 배열 : 포인터로 배열을 만들어서 각 배열에 주소를 저장할 공간을 만듦.
int *ptr[]
- 배열의 핵심 = 배열의 주소는 쭈욱 연결되어있다.
(*ptr) = ptr[0] = ptr
*(ptr+1) = ptr[1]
*(*(ptr+1)+1) = ptr[1][1]
ptr[n]+1 -> n 다음 번 째 배열
-
array[행][열] : 코딩할 때 <- 이방향으로 읽으니까, 그래서 <-열, 행 순서로 적혀있음.
-
배열의 첫 주소이자 원주소 = 배열의 이름.
-
라이브러리
- time.h // time_t, ctime(&time_t) : 시간확인
- ctype.h // isalpha(c) : 대소문자 확인 (대_1,소_2)
-
문자열
- 끝에는 null이 들어간다는 점. 잊지말자
<2021.07.09 ~ >
(메모1)
strtok설명
(메모2)