이차원배열을 어떻게 malloc하느냐는 질문을 받았는데, 쉽지 않은 주제네요. 이차원 배열을 함수 매개변수로 넘기는 방법을 먼저 살펴보겠습니다. C 언어에서 2차원 배열은 포인터의 배열이고 각 포인터는 COLS칸 배열의 주소를 가집니다. 여기서 ROWS, COLS는 상수를 나타내고 rows, cols는 변수일 수 있습니다. (참고) void func(int array[ROWS][COLS]) { ... void func_vla(int rows, int cols, int array[rows][cols]) { ... void test(int array[][COLS], int rows) { ... void test(int (* array)[COLS], int rows) { ... 첫번째는 상수 크기의 배열을 넘..
이 글에서는 포인터에 대해 살펴보겠습니다. 포인터는 C 언어에서 제일 어려운 부분인데요, 사실 자바나 파이썬 같은 언어에는 포인터가 없기 때문에 C 보다 배우기 쉽습니다. 그만큼 포인터가 어려운 개념이지만 그래도 공부해야 하는 이유는 뭘까요? 포인터를 알면 프로그램이 메모리를 사용하는 방식을 이해하고 컨트롤할 수 있습니다. 그래서 알고리듬 시험이나 코딩테스트를 준비할 때 덮어두었던 C를 꺼내서 공부하고 C++을 새로 배우기도 합니다. 이들 언어는 포인터가 있어서 빠르고 메모리를 적게 사용하는 프로그램을 짤 수 있기 때문입니다. 그럼 이제 포인터에 대해 본격적으로 살펴보겠습니다. 포인터란 다른 변수의 주소를 가지고 있는 변수입니다. 그럼 변수란 무엇인가? 변수란 메모리에 어떤 데이터를 저장할 수 있는 공간..
이 글에서는 구조체에 대한 용어와 개념을 소개하겠습니다. 구조체를 어떻게 정의하고 사용하는가와 메모리 할당 등에 대해 살펴봅니다. 강의노트를 이용해 설명해 보겠습니다. 구조체란 타입이 다른 데이터를 하나로 묶는 방법입니다. 배열은 타입이 같은 데이터만 묶을 수 있죠? 근데 우리가 프로그래밍을 하다 보면 서로 다른 타입의 데이터를 묶어서 관리해야 할 일이 많이 생깁니다. 구조체는 그런 데이터를 이름을 붙여서 필드로 관리하게 됩니다. 예를 들어 학생을 나타내는 구조체라면 이름, 나이, 점수를 가질 수 있는데 이름은 문자열이고 나이는 int, 점수는 float로 표시되어야 한다면 구조체로 이들 세 개의 값을 묶어서 관리하면 편리하겠지요? 구조체는 먼저 선언을 해주어야 합니다. 구조체 안에 어떤 필드가 있는지 ..
printf의 기본 사용법을 요약한 페이지입니다. https://alvinalexander.com/programming/printf-format-cheat-sheet 일반적인 문장은 다음과 같이 생겼습니다. 여기서 %s와 %d 문자의 의미는 무엇일까요? printf("the %s jumped over the %s, %d times", "cow", "moon", 2); 숫자를 출력하는 넓이 조정하기 %3d라는 표시는 정수에 대해 세칸의 넓이로 출력하라는 의미입니다. 기본적으로는 오른쪽 정렬을 디폴트로 합니다. 세 칸을 넘어가는 숫자가 오면 오른쪽으로 더 나가게 됩니다. 전체 넓이를 정해진 크기에 맞추고 앞에 남는 크기만큼 빈칸을 채웁니다. printf("%3d", 0); . . 0 세 칸에 맞춰 오른쪽 정..
요즘은 프로그래밍 언어 중에 파이썬을 처음으로 배우는 경우가 많습니다. 파이썬은 배우기 쉽고 간결한 언어여서 처음 배우는 언어로 좋습니다. 그러나 파이썬 다음으로 C나 자바를 배우려고 할 때는 새로운 개념과 알아야 할 것들이 많습니다. 사실 C는 가장 기본적인 기능을 가지는 언어로 low-level 언어라고 얘기합니다. 그 의미는 프로그램이 가지는 명령어나 기능이 해주는 일이 작고 기본적인 것들이라 파이썬에 비해 프로그래머가 직접 짜주어야 하는 경우가 많습니다. 사실은 파이썬에 비해 해주어야 하는 일이 정~말 많습니다. 그럼 왜 그렇게 불편하고 번거로운 언어를 쓰는 걸까요? 그건 프로그래머가 고생하는 만큼 반대급부가 있기 때문이죠. 가장 큰 장점은 빠르다는 점입니다. C 언어는 정말 빠르고 가볍습니다. ..
- Total
- Today
- Yesterday
- 스트링
- zip
- python exercise
- Iterator
- 자바regex
- TypeError
- sort key
- max
- format
- Lazy evaluation
- follow
- 동적바인딩
- typedef
- python example
- 이터레이터
- Camel Style
- 패턴
- comparable
- C++ 클래스
- contains
- CompareTo
- contentEquals
- 스트링 +
- ToString
- 지연계산
- indexof
- 이터러블
- APPEND
- rust
- 콜렉션
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |