Programming (163) 썸네일형 리스트형 [Java] 올바른 코딩 습관 코드 컨벤션 1. 상수 값의 경우 static final, 변수 이름은 대문자 아래와 같이 작성하면 안 된다. private static int RANGE = 9; private final int MIN_VALUE = 1; private final로 사용할 수 있지 않을까 생각할 수 있다. 아래 내용을 확인해보자. private static final로 선언한 변수 재할당 불가능. 메모리에 한 번 올라가면 같은 값을 클래스 내부의 전체 필드, 메소드에서 공유한다. 인스턴스마다 공통된 값을 가져야 하는 경우 사용. private final로 선언한 변수 재할당 불가능. 해당 필드, 메소드별로 호출할 때마다 새로운 값이 할당(인스턴스화)된다. 초기화 이후 값이 변경되지 않아야 하지만, 인스턴스마다 값이 달라.. [티스토리] 임시저장 목록 정리하기(삭제) 1. 글쓰기 화면 우하단에 있는 임시저장 버튼 오른쪽의 숫자를 클릭. (글자 말고 숫자를 클릭해야 한다) 2. 임시저장된 글 목록에서 원하는 글을 삭제한다. 블로그 관리 화면에 임시저장 관련 탭이 없어서 한동안 우왕좌왕 했다. 임시저장된 글이 있으면(작성 하다가 임시저장 해놓고 완성하지 못한 글) 새로운 글을 쓸 때마다 "임시저장된 글을 다시 불러 올까요?" 라는 메시지와 마주하게 된다. 사실 별 것 아닌 알림 메시지이다. 하지만 가끔 머리 위에 먹구름이 낀 날에 해당 메시지를 만나면 알 수 없는 분노가 솟구친다. 게다가 (내가 눈썰미가 없는 탓이겠지만)임시저장 글 목록을 어떻게 정리할 수 있는지에 대한 친절한(눈에 띄는) 버튼이 보이지 않으면 "굳이 이런 일 때문에 구글링까지?" 라는 생각이 든다. 이.. [CS50] 메모리 구조 머신 코드 영역에는 우리 프로그램이 실행될 때 그 프로그램이 컴파일된 바이너리가 저장된다. 글로벌 영역에는 프로그램 안에서 저장된 전역 변수가 저장된다. 힙 영역에는 할당된 메모리의 데이터가 저장된다. 그리고 스택에는 프로그램 내의 함수와 관련된 것들이 저장된다. 힙 영역에서는 메모리가 더 할당될수록, 점점 사용하는 메모리의 범위가 아래로 늘어난다. 마찬가지로 스택 영역에서도 함수가 더 많이 호출 될수록 사용하는 메모리의 범위가 점점 위로 늘어난다. 이렇게 점점 늘어나다 보면 제한된 메모리 용량 하에서는 기존의 값을 침범하는 상황도 발생한다. 이를 힙 오버플로우 또는 스택 오버플로우라고 일컫는다. 출처 https://www.boostcourse.org/cs112/lecture/119035/?isDesc=.. [CS50] 문자열 문자열 아래와 같이 s에 “EMMA”라는 값을 저장한다고 생각해 보자. String str = "COMPUTER"; 문자열은 결국 문자의 배열이고, str[0], str[1], str[2], … 와 같이 하나의 문자가 배열의 한 부분을 나타낸다. 가장 마지막의 \0은 0으로 이루어진 바이트로, 문자열의 끝을 표시하는 약속이다. 변수 str은 결국 이러한 문자열을 가리키는 포인터가 된다. #include int main(void) { char *s = "COMPUTER"; printf("%s\n", s); } 결과) COMPUTER char 포인터를 이용해 문자열을 출력할 수 있다. 문자열 비교 #include int main(void) { char *s = "EMMA"; printf("%p\n", s);.. [CS50] 포인터 C에는 포인터 라는 개념을 통해서 변수의 주소를 쉽게 저장하고 접근할 수 있다. ‘*’ 연산자는 어떤 메모리 주소에 있는 값을 받아오게 해준다. 이 연산자를 이용해서 포인터 역할을 하는 변수를 선언할 수도 있다. #include int main(void) { int n = 50; int *p = &n; printf("%p\n", p); printf("%i\n", *p); } 결과) 0x7ffc3d293cdc 50 위 코드를 보면 정수형 변수 n에는 50이라는 값이 저장되어 있다. 그리고 *p라는 포인터 변수에 &n 이라는 값, 즉 변수 n의 주소를 저장했다. int *p 에서 p앞의 *는 이 변수가 포인터라는 의미이고, int 는 이 포인터가 int 타입의 변수를 가리킨다는 의미이다. 따라서 첫 번째 p.. [CS50] 메모리 C언어로 작성한 코드가 실제로 컴퓨터 메모리에 어떻게 저장되는지 알아본다. 16진수 컴퓨터과학에서는 숫자를 10진수나 2진수 대신 16진수(Hexadecimal)로 표현하는 경우가 많다. 컴퓨터에서 데이터를 처리하기 위해 16진수를 사용할 때 장점이 있기 때문이다. 16진수와 일상생활에서 우리가 사용하는 10진수와 비교하면 그 차이를 알 수 있다. 16진수를 사용하면 10진수보다 2진수를 간단하게 나타낼 수 있다. 16진수로 값을 표현하는 방법을 이해하고 나면 16진수, 2진수, 10진수를 변환하는 프로그램을 만들어볼 수 있다. 10진수를 16진수로 JPG 이미지 파일은 항상 255 216 255 로 시작되고 이것은 10진수이다. 하지만 실제 컴퓨터 내에서는 10진수를 사용하지 않는다. 컴퓨터는 0과 1.. [CS50] 알고리즘 알고리즘을 실행하는데 걸리는 시간을 표현하면 다음과 같다. 위와 같은 그림을 공식으로 표기한 것이 Big O 표기법이다. 여기서 O는 “on the order of”의 약자로, 쉽게 생각하면 “~만큼의 정도로 커지는” 것이라고 볼 수 있다. O(n) 은 n만큼 커지는 것이므로 n이 늘어날수록 선형적으로 증가하게 된다. O(n/2)도 결국 n이 매우 커지면 1/2은 큰 의미가 없어지므로 O(n)이라고 볼 수 있다. 주로 아래 목록과 같은 Big O 표기가 실행 시간을 나타내기 위해 많이 사용된다. O(n^2) O(n log n) O(n) - 선형 검색 O(log n) - 이진 검색 O(1) Big O가 알고리즘 실행 시간의 상한을 나타낸 것이라면, 반대로 Big Ω는 알고리즘 실행 시간의 하한을 나타내는 .. [CS50] 문자열 문자열(string) 자료형의 데이터는 사실 문자(char) 자료형의 데이터들의 배열이다. string s = "hello";와 같은 문자열 s가 정의되어 있다면, s는 문자의 배열이기 때문에 메모리상에 다음과 같이 저장된다. h e l l o \0 s[0] s[1] s[2] s[3] s[4] s[5] 장 끝의 ‘\0’은 문자열의 끝을 나타내는 NULL 종단 문자이다. string names[4]; names[0] = "EMMA"; names[1] = "RODRIGO"; names[2] = "BRIAN"; names[3] = "DAVID"; printf("%s\n", names[0]); printf("%c%c%c%c\n", names[0][0], names[0][1], names[0][2], names[.. 이전 1 ··· 7 8 9 10 11 12 13 ··· 21 다음