일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래밍
- Kotlin
- c#
- 알고리즘
- doit코틀린프로그래밍
- tipssoft
- Visual Studio
- 포인터
- Tips강좌
- 함수
- Direct2D
- 김성엽
- Windows
- 티스토리
- Programming
- Tips프로그래밍강좌
- 백준
- CS
- Javascript
- Desktop
- 배열
- 리뷰
- 이지스퍼블리싱
- VS ERROR
- c++
- 문법
- 지식나눔강좌
- Win32
- c
- 연산자
- Yesterday
- Today
- Total
목록DEV/C C++ (119)
F.R.I.D.A.Y.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/m6Fyc/btqAzzg6GH6/koS3MF0umgq2uLAKBxrvxk/img.png)
비트 연산자의 종류와 연산 방법을 알아봅니다. 비트 연산자 & (비트 AND, 비트곱) 비트 AND연산자는 양쪽 피연산자(operand) 모두 참값이어야 1을 반환했던 논리 AND(&&) 연산자와 비슷합니다. 양쪽 두 값의 동일 위치에 존재하는 비트의 값이 모두 1인 경우에 해당 위치의 비트를 1로 하여 반환합니다. A B 연산자 결과 1 0 & 0 1 1 1 0 1 0 0 0 0 이 특성을 이용한 연산 표는 다음과 같습니다. A 연산자 B Result 1001 & 1010 1000 (0x08) 1100 0010 0000 (0x00) 1110 1101 1100 (0x0C) 더보기 # &의 이름은 앰퍼샌드라고 부릅니다. 앰퍼샌드 - 위키백과, 우리 모두의 백과사전 ko.wikipedia.org | (비트 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/WDktp/btqAiW99Ywf/jLRpxNEqkoJCi3p1pYAJV0/img.jpg)
C언어의 꽃이라 불리는 포인터는 그 사용의 범위가 넓은 만큼, 많은 초보 개발자들이 힘들어하는 문법이기도 합니다. 오늘은 이러한 포인터 중에서도 특별한 void 포인터에 대해 알아봅니다. 모든 포인터[# typedef된 자료형 제외]는 기본 자료형 뒤에 *(asterisk)가 표시되어 있습니다. void 포인터이니 먼저 void 자료형에 대해 알아봅니다. void 일전에 main 함수의 반환 타입은 int가 표준이라는 포스트를 작성한 적이 있습니다. void도 결국은 반환 타입입니다. 그렇다면 void는 어떤 것을 반환할까요? 정답은 '아무도. 아니, 작성자 본인만 안다'입니다. void 타입은 많은 사람들이 반환 타입이 존재하지 않으면, 달리 말해 반환할 대상이 없다면 void를 작성한다고 설명합니다...
malloc VS calloc 동적할당은 프로그램에 조금만 규모가 생기면 잘 사용하게 되는 기술로 C언어에서는 함수를 이용해 동적할당을 받는데요, 동적할당을 하는 함수로는 대표적으로 아래와 같은 것들이 있습니다. malloc calloc real.. pang2h.tistory.com 위 포스트에 댓글로 들어온 질문입니다. malloc 함수를 사용할 때와 달리 왜 calloc 함수는 두 개의 인자를 받아야 할까요? calloc() 이전 포스트에서도 말한 것과 같이 calloc 함수는 malloc 함수로 받은 메모리 공간을 0으로 초기화하여 메모리 시작 주소를 반환하는 함수입니다. 인자 두 개가 필요한 것은 메모리 공간을 0으로 초기화할 때 필요합니다. 다음 코드를 보겠습니다. #include int mai..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/1mynK/btqz13vvak2/xk2Q09SkXfWSbcSAE89YNK/img.png)
조금 복잡한 계산들. 즉, 복잡한 수식들을 반복해서 작성하기는 여간 귀찮은 것이 아닙니다. 그래서 우리는 전처리 명령어(define)를 이용해서 매크로 함수로 그 수식을 대신하곤 합니다. 이번 포스트에서는 이 매크로 함수를 작성할 때 무엇을 주의해야 하는지 알아봅니다. 매크로 함수 일단 아래 코드를 예시로 들겠습니다. 간단히 두 수를 더하는 함수를 만들었다고 합시다. #include int add(int a, int b){ return a +b; } int main(void){ int a,b; scanf("%d %d", &a, &b); printf("%d + %d = %d\n", a, b, add(a,b)); return 0; } 우리 블로거는 add 함수를 이용하는 것은 프로그램 속도에 영향을 주기 때..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/B5BrE/btqzOmV4V1d/udRckcputlQA2tJ4fDIXCK/img.jpg)
우리나라 많은 사람들이 이용하는 Windows 운영체제는 주기적으로 업데이트를 거쳐 다양한 기능을 추가로 제공합니다. 운영체제를 다시 설치하지 않는데 어떻게 새로운 기능이 추가될 수 있을까요? # 이전 에 이어서 작성하는 포스트입니다. Callback 사전에서의 Callback 정의는 다음과 같습니다. 프로그램을 작성하는 과정에서도 콜백(Callback)이라는 기술을 사용합니다. Node.js가 프로그램을 실행하는 방식이 콜백 함수가 다른 콜백 함수를 호출하는 식으로 이루어진다고 합니다. 프로그래밍에선 아래와 같은 기능을 콜백 함수라고 부릅니다. "유용한 함수를 컴파일해 배포했습니다. 사람마다 원하는 세부 기능이 다를 수 있으므로 본인의 함수 안에서 사용자가 원하는 함수를 직접 작성할 수 있도록 공간을 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b2hp9k/btqzK07tgWa/PUbXk8xnBRyJceNTuyGkh0/img.jpg)
길벗에서 출판한 책 에서 처음으로 나오는 알고리즘은 스택을 이용한 주가 스팬 계산입니다. 마침 스택에 대한 포스트도 연이어 작성 중인 와중에 이 책을 읽고 있어 잘됐다 싶어 포스트 주제로 선정하게 되었습니다. 주가 스팬을 구하는 기본적인 알고리즘 구조는 책에서 보실 수 있습니다. 저는 이 책에서 선보이는 의사 코드(pseudo code)를 C언어로 재구성하고자 합니다. 주가 스팬? 먼저 문제를 풀어보기 전에 주가 스팬이 무엇인지 알아봅니다. 주가 스팬은 다음과 같습니다. 왼쪽과 같은 주식 그래프가 존재한다고 생각해봅시다. 이때 1번 그래프는 앞에 주가 스팬을 판단할 값이 존재하지 않으므로 1번의 그래프 주가 스팬은 1입니다. 2번 그래프는 1번 그래프보다 값이 크므로 주가 스팬은 2입니다. 이는 5번 그..
아래 포스트에서는 소괄호() 만이 입력으로 들어왔기 때문에 굳이 스택을 만들지 않고 작성해도 되었지만, 만일 대-중-소괄호를 모두 이용한다면 어떻게 해야 할까요? 링크된 포스트의 코드로는 답이 되지 않습니다. BAEKJOON 9012 : 괄호 for C 스택을 이용하는 문제라고는 하지만 잘 생각해보면 굳이 스택을 사용하지 않아도 되는 문제입니다. 문제의 핵심은 결국 괄호의 특성을 이해하는 것이라고 생각합니다. 결국 괄호가 제 기능을 하기 위해서는 여는.. pang2h.tistory.com # BAEKJOON의 문제를 풀이하기 위한 용도가 아니므로 입력은 한 번만, 그리고 최대 100개의 문자를 받을 수 있도록 제한합니다. 스택을 만들자 만일 여러 종류의 괄호를 이용한다면 스택이 필요합니다. 물론 배열을 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bF0OQu/btqzsWdA2Fb/EsQqwx7185yUdjZH8KPch1/img.png)
많은 사람들이 C언어를 배우기 시작하다가 중간에 막히는 부분이 있습니다. 대표적으로 포인터가 있는데요, 이번에 배울 것 또한 포인터입니다. 이번에 배울 포인터는 기존의 포인터와는 약간 다른, 함수 포인터입니다. # 코드를 직접 따라 작성해보세요. # 설명하는 기술 자체가 입문자들이 사용하기엔 부담이 되는 기술입니다. 이해가 되지 않아서 좌절하지 마시고 '이런 기술이 있다'정도로만 알아두셔도 좋습니다. 포인터 함수 포인터란 무엇일까요? 기존의 포인터[#포인터알아보기 포인터에 대한 내용은 다음 글을 참고하세요.]가 변수의 메모리 주소를 값으로 가지는 자료형이라 한다면, 함수 포인터는 함수들의 시작 주소를 값으로 가지는 자료형이라 생각하면 되겠습니다. 함수 포인터는 기본적으로 다음과 같이 선언합니다. #inc..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nkdfK/btqznPjHC0L/2vo270qki3o5Ko4wO8idj0/img.png)
동적할당은 프로그램에 조금만 규모가 생기면 잘 사용하게 되는 기술로 C언어에서는 함수를 이용해 동적할당을 받는데요, 동적할당을 하는 함수로는 대표적으로 아래와 같은 것들이 있습니다. malloc calloc realloc 이번 시간에는 위 함수들의 사용 목적에 대해 알아봅니다. # 이 함수들을 사용하기 위해서는 malloc.h 혹은 stdlib.h 헤더를 추가해야합니다. malloc 가장 기본이 되는 함수로서, 대체적으로 동적할당을 들어가게 되면 이 함수를 제일 처음 접하지 않을까 합니다. 이 함수는 아래와 같은 기본형을 가지고 있습니다. void *malloc(size_t size); // from MS DOCS void* malloc(size_t size); size 할당 받을 메모리 크기입니다. 기..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/scgJ0/btqxlwznC1j/JbcjaEg0b3RklUyQoX2RcK/img.png)
C를 배우다보면 키워드와 예약어란 단어를 종종 듣습니다. 사람들이 C언어는 키워드와 예약어를 혼용해서 사용하는데 이유를 알아봅니다. 키워드 컴파일러에서 그 자체로 유의미한 단어를 키워드라고 생각하시면 됩니다. 이 키워드를 이용해 코드를 작성하며, 각종 분기, 반복, 변수 선언 등에서 사용합니다. C언어의 키워드는 32개가 존재합니다. auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while 예약어 현재 사용하지는..