C언어
•
문자열을 재사용한다. (주소 차이 1) = 공공재
•
공공재는 data 영역에 존재
•
나머지 문자열 변수 등 지역 변수는 stack에 존재
•
C언어 문자열 끝에는 \0 ( 0, null )이 붙는다.
→ 문자열의 끝을 알리기 위함 ( char 주소 값으로는 시작 값만 표현 가능 )
•
문자배열, 배열도 자료구조
char* str = "문자열상수" //- 8byte(포인터) + 15byte(문자열 상수)
char str[100] = "문자열변수" //- 스택에 생성-108byte
C
복사
// 문제 : 아래와 같이 출력되도록, change 함수를 구현해주세요.
#include <stdio.h>
void change(char**** pppp) {
****pppp = 'a';
*(***pppp + 1) = 'b';
*(***pppp + 2) = 'c';
*(***pppp + 3) = 'd';
*(***pppp + 4) = '\0';
// or
(***pppp)[0] = 'a';
(***pppp)[1] = 'b';
(***pppp)[2] = 'c';
(***pppp)[3] = 'd';
(***pppp)[4] = '\0';
int main(void) {
char str[10];
char* p = str;
char** pp = &p;
char*** ppp = &pp;
change(&ppp);
printf("%s\n", str);
// 출력 => abcd
return 0;
}
C
복사
가비지 컬렉팅
사용하지 않는 메모리를 찾아 회수
과거 - reference count : 객체를 가리키는 개수를 카운트
현재 - mark and sweep : root부터 탐색해 내려가며 마크
JAVA
생성자를 사용하는 이유
•
객체 생성시 즉시 매서드를 정의하기 위함
추상클래스
•
본점 → 체인점
•
abstract는 리모콘 전용 클래스라는 것을 여러 개발자에게 명시적으로 알리기 위함
•
객체 생성 불가!
객체의 매서드는 무조건 실행된다는 보장이 있어야 한다.
→ 버튼을 누르는 입장에서 객체를 확인할 수 없음
>> 메서드 하나라도 abstract가 되면 클래스도 abstract
애자일방법론
•
짝 프로그래밍
•
TDD
TDD
1.
실패하는 테스트를 만들어라 ⇒ 빨간색
2.
꼼수를 써서 테스트를 통과하게 만들어라 ⇒ 그린
3.
리팩토링을 하라 ⇒ 블루
레드/그린/블루 반복
split에서 \\는 뒤에 기호가 진짜 기호라는 의미
모든 클래스는 기본적으로 디폴트 생성자를 가지고 있다.
→그것은 인자가 없다.