전체 글

분할정복
특정 장소에 변수를 저장하고 나중에 그 변수를 찾는 데는 잘 정의된 규칙이 필요하다 이런 규칙을 스코프라 한다. 1. 1 컴파일러 이론 자바스크립트는 일반적으로 '동적' 또는 '인터프리터'언어로 분류하지만 실제로 '컴파일러 언어'다. 컴파일러 언어의 처리 과정에서는 프로그램을 이루는 소스 코드가 실행되기 전에 3단계를 거치는데 이것을 컴파일레이션이라고 한다. 토크나이징 / 렉싱 문자열을 나누어 토큰이라 불리는 의미 있는 조각으로 만드는 과정이다. 빈칸은 의미유무에 따라 토큰일수도 아닐수도 있다. var a = 2 ( var, a, =, 2, ; ) 파싱 토큰 배열을 프로그램의 문법 구조를 반영하여 중접 원소를 갖는 트리 형태로 바꾸는 과정이다. 파싱의 결과로 만들어진 트리를 AST Abstract Syn..
// prototype : 원형, 시제품 #include void walk(int); void rotate(int); void drawSquare(); // 선언( 함수 이름, 형, 매개변수만 적고 기능 구현은 안함) // drawSquare가 어떤 기능인지 몰라도 아래에 정의가 되어있기 때문에 실행 int main() { drawSquare(); } //걷기 void walk(int distance) { printf("%dcm를 걸었습니다.\n", distance); } // 돌기 void rotate(int angle) { printf("%d도 회전했습니다.\n", angle); } void drawSquare() { for (int i = 1; i
1. 변수 선언 // 배열 포인터 : 배열을 가리키는 포인터 // 포인터 배열 : 포인터들이 배열 #include int main() { int a = 10; int b = 20; int c = 30; int d = 40; int* ptr[4]; ptr[0] = &a; ptr[1] = &b; ptr[2] = &c; ptr[3] = &d; printf("%d %d %d %d\n", *ptr[0], *ptr[1], *ptr[2], *ptr[3]); } 2. 배열 선언 // 배열 포인터 : 배열을 가리키는 포인터 // 포인터 배열 : 포인터들이 배열 #include int main() { int arr[4] = { 1, 2, 3, 4 }; int* ptr[4]; for (int i = 0; i < 4; i++..
1. #include int main() { int arr[2][3] = { {1, 2, 3}, {4, 5, 6}} printf("%d\n", sizeof(arr)); // 24 printf("%d\n", sizeof(arr[0])); // 12 printf("%d\n", sizeof(arr[0][0])); // 4 } sizeof(arr) - 배열 전체의 크기 sizeof(arr[0]) - 첫번째 행의 크기 sizeof(arr[0][0]) - 1행 1열의 크기 2. /* 1. ptr == &ptr[0] 2. *ptr == ptr[0] 3. ptr + 1 == ptr에 sizeof(*ptr)을 더한값 */ #include int main() { int arr[2][3] = {{1, 2, 3}, {4, 5..
25 - 배열과 포인터의 관계 1. #include int main() { int a = 10; int *ptr_a = &a; printf("ptr_a의 값 : %d\n", ptr_a); // 6487572 printf("ptr_a + 1의 값 : %d\n", ptr_a + 1); // 6487576 4byte 만큼 더함 //포인터가 가리키는 변수의 자료형 크기만큼 더한다. } 2. #include int main() { int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int i = 0; i < 10; i++) { printf("&arr[%d] = %d\n", i, &arr[i]); printf("arr + %d = %d\n", i, arr + 1); //..
20 - 배열 int a[5] - 배열은 인덱스 하나당 자료형 크기만큼 차지 (int형 4byte, 4 * 5 = 20byte) int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0} - 반복문을 사용하여 배열의 길이만큼 반복 조건을 선언하고 싶을 때 >> sizeof(arr) / sizeof(int) (0부터 시작했을 시 -1을 넣어줌) 23 - 문자열 char arr[] = " " 이런식으로 사용 - 배열의 크기는 널문자("\0") 때문에 +1이 됨 문자열 출력타입은 %s - scanf 사용시 앰퍼샌드(&)가 필요없다. 문자열 크기 구하기 - sizeof(arr) / sizeof(char) - 1 (null문자의 크기까지 나오기 때문에 -1을 사용) 24 - 변수 가리키기 (포인..
· 예제/C
1. #include // 2차원 배열과 배열 포인터 int main() { int arr[2][3] = { { 1, 2 ,3 }, {4, 5, 6} }; // arr = &arr[0] , ptr = arr > ptr = &arr[0] > ptr = arr[0] for (int(*row)[3] = arr; row < arr + 2; row++) { for (int* col = *row; col < *row + 3; col++) { printf("%d", *col); } printf("\n"); } int *col = *row *row가 그 행의 첫번째 칸의 포인터가 돼야 하는 이유? row가 행 전체의 포인터라면 *row는 행 전체 그 자체가 되어야 할텐데? 포인터는 주소. 배열을 가리킨다고 해서 주소 ..
· 예제/C
1. #include /* 10 * 10 이하의 정수형 이차원 배열을 입력받아 그 배열의 각 행의 요소의 합을 출력 */ int main() { int arr[10][10]; int n, m, i, j; printf("행과 열을 입력하세요\n"); scanf("%d %d,", &n ,&m); for(i = 0; i < n; i++) { for(j = 0; j < m; j++) { scanf("%d", &arr[i][j]); } } for(i = 0; i < n; i++) { int sum=0; for (j = 0 ; j < m; j++) { sum += arr[i][j]; } printf("%d행의 합은 : %d\n", i+1, sum); } } 2. #include /* 100개 이하의 정수를 입력받아..
한우콩
Divide and Conquer