일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Direct2D
- c#
- 티스토리
- Visual Studio
- 이지스퍼블리싱
- VS ERROR
- 포인터
- Javascript
- Win32
- 알고리즘
- tipssoft
- 배열
- 김성엽
- 함수
- Windows
- doit코틀린프로그래밍
- Desktop
- 리뷰
- Tips프로그래밍강좌
- Programming
- 백준
- c++
- Tips강좌
- 연산자
- 지식나눔강좌
- 문법
- CS
- 프로그래밍
- Kotlin
- 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/zCSCt/btqwixnJSUN/Kw8VrLNmkIoIwzK4PKDnWK/img.png)
VS ERROR C4996 : SDL 오류 오늘은 scanf() 함수와 같이 입출력 함수, 문자열 함수를 다룰 때 종종 발생하는 C4996에 대해 다뤄봅니다. 원인 원래는 문제없이 컴파일되는 것이 맞지만, scanf() 등의 함수에서 발생 가능한 잠재적 문제점으로.. pang2h.tistory.com 위 C4996 경고가 발생했던 이유에 대해 알아보는 시간을 가져봅니다. 함수의 구조 함수의 구조부터 확인합니다. 일단, 간단히 strlen() 함수를 가지고 예시를 들어보도록 합니다. 아래는 예시를 위해 직접 작성한 strlen()과 동일 기능을 하는 함수입니다. int strlen(char* str){ int count = 0; while(1){ if (*str != 0) count++; else brea..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bWa9g5/btqwhU30v8D/7hA01WSmJBJQwTVwD2Jqs1/img.png)
연산자 중에 단항 연산자(++, -- 등)는 일반 사칙 연산자에 비해 속도가 빠른 편입니다. 물론 컴파일러에 따라 속도 문제가 해결이 되긴 하지만 기본은 단항 연산자가 더 빠릅니다. 편하기도 합니다. 그래서 자주 사용하지만, 조심해야 하는 위치가 있습니다. 오늘은 단항 연산자의 사용을 지양해야 하는 위치를 알아봅니다. ※ Visual Studio 2019 Community v16.1.3. 기준으로 작성되었습니다. 단항 연산자 특성 일단 단항 연산자의 특성을 알아봅시다. 단항 연산자는 기본적으로 연산의 결과가 피연산자의 값에 영향을 주므로 실제 피연산자의 값이 변경되는 위치에 사용되어선 안됩니다. 대표적으로 문자열을 저장하는 포인터에 단항 연산자 사용은 위험한 행동입니다. 다음 코드를 보겠습니다. #inc..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/GagDJ/btqwk9LWhQs/AkBRd4bFe5cKokBpmp0KIK/img.png)
이번 포스트에선 C에서 문자열을 어떻게 관리하고 저장하는지 알아봅니다. 하나의 변수, 하나의 값 프로그래밍을 하는 데 있어 중요한 것 중 하나가 변수입니다. 연산의 결과를 저장하기도, 또 저장된 값을 불러오기도 하는데 이용합니다. 이 변수의 특성 중에 중요한 한 가지가 있습니다. 바로 하나의 값만을 저장할 수 있다는 점입니다. 따라서 하나의 변수가 동시에 두 가지 값을 저장할 수는 없습니다. 저장할 땐 그렇다 치더라도 값을 빼내 올 때 무엇을 빼야 할지 결정지을 수 없기 때문입니다. 그렇지만 우리는 문자열을 변수에 저장해서 사용합니다. 어떻게 이런 일이 가능할까요? 생각의 전환 이런 문제를 C언어에서는 전체 문자열을 저장하지 않고 맨 처음 한 글자가 저장된 주소를 저장하는 것으로 해결했습니다. 이미지로 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dOsSYO/btqv7Coz1k5/MPv2UGQj83sksBBaa2enk0/img.png)
이전 sizeof 연산자에 대한 포스트는 이 포스트를 위한 선행 단계라고 봐도 무방하겠네요. 이번엔 sizeof 연산자를 사용해선 안 되는 부분을 다뤄봅니다. ※ 이 포스트는 Visual Studio 2019 Community v16.1.2. 에서 테스트되었습니다. 메모리 크기는 반환하지 않습니다 우리가 이전에, malloc() 함수 등을 사용하는 동적 할당이라는 방법을 배우기 전엔 배열을 사용했습니다. 이렇게 컴파일 전에도 크기를 알 수 있는 배열을 정적 배열(static array)라고 부르는데, 이 정적 배열을 이용하면서 사용했던 방법은 동적 배열에선 이용할 수 없습니다. 다음 코드를 보겠습니다. #include #include int main(void) { int* arr = (int*)mallo..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wdO1g/btqv7o45BBi/2b1dBJD93ksosVsUGLfzV1/img.png)
며칠 전 동기들이 작성한 코드를 보다가 잘못 작성한 코드가 다수 보이길래 이렇게 왔습니다. sizeof 연산자에 대한 문제였는데요. 오늘은, sizeof에 대한 연산자의 사용을 알아봅니다. ※ 이 포스트는 Visual Studio 2019 Community v16.1.2. 에서 테스트되었습니다. 기능 sizeof는 변수, 혹은 자료형, 상수의 크기를 반환하는 연산자입니다. 다음 코드를 실행하면 이 나옵니다. #include int main(void) { char ch; short wch; int i; long l; long long ll; float f; double dbl; printf("%d ", sizeof(ch)); printf("%d ", sizeof(wch)); printf("%d ", siz..
mijien0179/SnakeWin Snake game with Windows API. Contribute to mijien0179/SnakeWin development by creating an account on GitHub. github.com 초기 커밋. 그리는 과정이 보이므로 개선 필. ++ 방학중에 프로그램 작성 포스트를 해볼 예정...
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/canhfw/btqvusr98qX/cCcMnlkQ2fldfZ0cKwpz20/img.png)
오랜만에 찾아왔습니다. 이번 시간에는 비슷해 보이면서도 다른, define과 typedef에 대해 알아봅니다. 사실 define과 typedef는 엄연히 다르지만, 주변을 보면 혼용해서 사용하는 것을 보고 작성하는 겁니다. 제대로 된 차이를 알리기 위해 글의 시작은 define과 typedef의 설명으로 시작합니다. define define은 전처리 지시자입니다. 전처리 지시자에 대한 내용은 다음 문서(MS DOCS, ENG)를 참고하세요. 이 전처리기는 컴파일 전에 시행되어 전처리 지시자로 선언된 항목을 일괄적으로 고친 후, 이렇게 고친 코드를 컴파일하게 됩니다. 이해를 돕기 위해 아래 이미지를 추가했습니다. 프로그래밍 언어를 목적 파일(오브젝트 파일 obj) 파일로 만드는 과정을 컴파일 과정이라고 부..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/PNxRE/btquSpi8lrS/b0bAEr3VKjqRMKhJskvmg0/img.png)
매번 scanf_s를 사용하면서도 제대로 된 사용법을 몰라서 질문을 하는 분들이 많습니다. 그래서 이번 포스트에서는 scanf_s의 사용 방법에 대해 설명합니다. scanf_s C언어에서 입력을 받는 표준 입력입니다. 과거에도 C언어 표준으로 존재하기는 했으나 선택 구현이라 scanf_s를 구현한 컴파일러는 MSVC밖에 없었다고 하더군요. 그래서 많은 사람들이 scanf_s는 MSVC에서만 제공하는 "C언어 비표준이다!"라고 단정 짓는 경우가 있었습니다. 저도 최근까지는 scanf_s가 비표준인 줄 알고 있었어요... scanf_s의 함수 원형은 다음과 같습니다. int scanf_s(const char *format [, argument]...); 이때 [, argument]... 는 추가로 입력을 받..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/doF58x/btquMBqn3k3/GAzd1KUb03QWXRdoFBGek1/img.png)
이전 마방진 포스트에서 배열 선언은 x-y가 아니라 y-x순으로 작성하는 것이 효율적이라고 말씀드린 적이 있습니다. 오늘은 어째서 y-x순이 더 효율적인지에 대해 포스트합니다. 홀수 마방진 풀기 이웃 학부에서 홀수 마방진 프로그램을 과제로 받았단 소식을 접하고 동아리 개강총회가 끝나고 시간 들여서 만들어봤습니다. 다른 사람들의 코드와는 달리 굳이 수식을 계산하고 할 필요 없이 그냥 즉흥적으로 생.. pang2h.tistory.com 메모리 구조 먼저 이 문제를 알아보기 전에 메모리 구조를 알아볼 필요가 있습니다. 메모리 구조를 다루는 포스트가 아니니 이번엔 정말 단순하게만 설명합니다. 컴퓨터에서 메모리라고 한다면 일반적으로는 RAM(주기억장치)을 지칭합니다. 이 메모리라는 것을 운영체제는 선형으로 관리합..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/FLgy6/btquy1a4XrA/ZUkvNa6uREeSyPVPFanyn1/img.png)
일반적인 경우에는 잘 사용하지 않지만, 그렇지만 종종 사용하게 되는 접미사에 대해 배워봅니다. 구글에 '접미사'를 검색하면 아래와 같은 결과나 나오네요. 여느 언어처럼 C/C++에도 접미어, 접두사가 있습니다. 이번 시간은 접미어를 알아보죠. 접두사는 다음에 알아보는걸로! 접미사 정수 상수는 int, 실수 상수는 double이 기본형이라고 지난 포스트에서 말했습니다. 그렇다면 다른 자료형으로 정수나 실수 상수를 선언하려면 어떻게 할까요? 이런 상황때문에 접미사가 탄생했다고 보면 되겠습니다. C/C++에서도 접미사는 자연어와 마찬가지로 어떤 단어나 성분 뒤에 붙게 됩니다. 정수나 실수 상수(리터럴)이 성분이라고 보면 될것같습니다. 접미사의 종류 접미사는 여러가지가 존재합니다. 자료형 접미사 unsigned..