일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CS
- c
- 리뷰
- Direct2D
- 문법
- 포인터
- 지식나눔강좌
- 프로그래밍
- 이지스퍼블리싱
- Visual Studio
- Kotlin
- c++
- Desktop
- 백준
- c#
- 연산자
- 티스토리
- 배열
- Win32
- VS ERROR
- doit코틀린프로그래밍
- Windows
- 알고리즘
- 김성엽
- 함수
- Javascript
- Tips강좌
- Tips프로그래밍강좌
- Programming
- tipssoft
- Yesterday
- Today
- Total
목록c (65)
F.R.I.D.A.Y.
Prev. 배열(array) part1. default 이전 포스트[# 한참 지난 포스트이긴 하지만..\n 한참 시간이 지난 포스트다 보니 설명하는 어투가 다릅니다. 대표적으로 존댓말로 바뀌었다던지.. 아마도 조만간 개편을 진행해야겠군요.]에서 우리는 자료형과.. pang2h.tistory.com 배열의 심화 학습이라고 생각할 수 있는 포스트입니다. 이전 시간에는 배열의 기본적인 사용법을 알아보았다면 이번 시간에는 다차원 배열에 대해 알아봅니다. 차원 먼저 작성되었던 포인터에서도 언급이 되었던 차원 개념입니다. 우리 세계는 3차원 공간에 1차원의 시간이 더해진[# 뭐 더 나아가면 더 많은 차원이 존재한다는 말도 있지만] 시공간이라고 말합니다. 우리가 점을 표현할 때는 몇 차원이 필요할까요? 차원이 필요하..
이전 포스트[# 한참 지난 포스트이긴 하지만..\n 한참 시간이 지난 포스트다 보니 설명하는 어투가 다릅니다. 대표적으로 존댓말로 바뀌었다던지.. 아마도 조만간 개편을 진행해야겠군요.]에서 우리는 자료형과 변수에 대해 공부했습니다. 이번 포스트에서는 배열에 대해 공부해봅니다. 변수 선언하기 이전 시간에 공부했던 내용입니다. 변수 하나에 값 하나. 달리 이야기하면 여러 개의 값을 저장하고 싶다면 그 개수만큼의 변수가 필요하다는 말이 되겠죠. 어떤 학급에 30명의 학생이 있다고 생각해봅시다. 이 학생들의 고유 번호를 저장할 변수가 필요합니다. 그렇다면 30명의 정보를 저장할 30개의 변수가 필요하겠군요. int student1, student2, student3, student4, student5, stud..
지난 시간에 우리는 포인터의 기본적인 내용을 배웠습니다. 포인터(pointer) 잘 배워가던 사람들도 멈추는, 일명 C언어에서 첫 번째 고비라 일컬어지는 포인터입니다. 하다 보면 쉽지만 막상 처음 하면 난생처음 보는 문법에 쓰는 방법도 독특한지라 많이들 힘들어합니다. # 선행으로 함수.. pang2h.tistory.com 이젠 포인터의 한 단계 더 높은, 다차원[# 지난 시간에도 말씀드렸지만 원서의 포인터 파트에서는 차원(dimension)이라는 표현은 없습니다. 역자들이 번역해올 때 정확한 명칭을 정하지 못해 배열의 차원이라는 단어를 가져온 것입니다. 이번 포스트에서는 차원이란 단어로 소개했으므로 차원으로 통일하겠습니다.\n용어를 올바르게 바꾸고자 노력하는 분이 계시니 만일 더 나은 단어나 반대 의견이..
잘 배워가던 사람들도 멈추는, 일명 C언어에서 첫 번째 고비라 일컬어지는 포인터입니다. 하다 보면 쉽지만 막상 처음 하면 난생처음 보는 문법에 쓰는 방법도 독특한지라 많이들 힘들어합니다. # 선행으로 함수를 알아야 합니다. 사용자로부터 입력받기 우리가 사용자로부터 값을 입력받을 때, 표준 입출력 함수를 사용하곤 합니다. 대표적으로 scanf[# scanf_s 또한 표준입니다. scanf_s에 대한 자세한 내용은 https://pang2h.tistory.com/200을 참고하세요.]가 존재하겠네요. #include int main(void){ int num; scanf("%d", &num); printf("%d\n", num); return 0; } 그렇다면 우리도 scanf 함수처럼 값을 입력받도록 해보..
이번 포스트는 제목 그대로 배열 변수의 이름이 어째서 해당 배열의 0번 인덱스의 주소가 되는지 알아봅니다. 간단해요! int arr[10]; &arr[0]; // 처음 배울 때 주로 사용하는 0번 인덱스의 주소를 가져오는 법입니다. &*(arr + 0); // 처음 코드는 위와 같이 변경할 수 있습니다. &*(arr); // 0은 더하든 말던 값의 변화가 없으므로 지울 수 있습니다. (arr); /* 간접 참조 연산자(*)와 주소 연산자(&)는 곱셈과 나눗셈처럼 서로 상반 관계입니다. 따라서 함께 없앨 수 있습니다. */ arr; // 불필요한 괄호를 지워줍니다. // 따라서 // &arr[0] == arr 입니다. 이 내용은 포인터를 배우다보면 알게되는 내용입니다 :) 이 표현법을 알게 되면 대괄호를 ..
C언어에는 typedef라 불리는 기존 자료형을 다시 정의하는 키워드가 존재합니다. 이 포스트에서는 이 typedef에 대해 알아봅니다. 나도 별명을 가지고 싶다 변수는 다양한 이름으로 선언해서 프로그램의 핵심 중추로 작용합니다. 그때, 자료형들이 시샘이 났습니다. 그래서 데니스 리치[# C언어의 창시자입니다. 자세한 내용은 링크를 참고하세요.]는 불만을 해소해주고자 만든 키워드가 typedef라고 보시면 좋겠습니다. int var1; char var2; double real1; 변수를 선언하는 방법입니다. typedef 또한 마찬가지로 작성할 수 있습니다. typedef int integer; 이렇게 작성하면 int의 별명으로서 integer라는 자료형이 새롭게 구현[# 물론 기반은 int이지만]됩니다..
일상생활에서 우리는 비슷한 부류끼리 그룹을 지어 관리하곤 합니다. 프로그래밍에서도 예외는 아닌데요, 오늘은 구조체에 대해 배워봅니다. 성적 관리하기 학생의 성적을 관리하는 프로그램을 만든다고 생각해봅니다. 국/영/수/사/과 다섯 가지 항목을 관리한다고 했을 때, 우리는 변수 다섯 개가 필요함을 느낄 것입니다. #include int main(void){ int korean, english, math, society, science; scanf("%d %d %d %d %d", &korean, &english, &math, &society, &science); printf("국어 : %d\n", korean); printf("영어 : %d\n", english); printf("수학 : %d\n", math..
최근 비트 연산자에 대한 질문을 들어온지라, 오늘은 비트 연산자에 대해 알아봅니다. 더보기 # 들어가기에 앞서.. 비트 연산자는 프로그래밍에 있어 고급 기술이라 분류할 수 있을 것 같습니다. 따라서 이해도 안 되는데 처음부터 배울 필요는 없습니다. 그래도 배워두면 프로그래밍 능력의 초석을 단단히 다질 수 있을 것이란 말을 드리고 싶습니다. 비트 알아보기 비트 연산자를 알아보기 전에, 우리는 비트에 대해 알아볼 필요가 있습니다. 비트란 정보의 가장 최소의 단위로서 이 비트가 8개 모여 1바이트가 됩니다. 예를 들어 아래 값이 char 타입의 변수에 들어있다고 합시다. ' 15 ' 이 숫자 15의 비트 패턴은 어떻게 될까요? #include int main(void){ unsigned char ch = 15..
10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다. www.acmicpc.net 이번에는 BAEKJOON 10845번이자 대표적인 선입선출의 구조를 같은 큐(Queue) 문제를 풀어봅니다. Code. #include #include typedef struct{ int *arr; // 데이터 메모리 포인터 int maxLength;// 가용 가능한 공간 길이 int length; // 현재 데이터가 담긴 길이 }queue; // 큐의 정보를 담은 스트럭처 queue* newQueue(int m..
스택을 이용하는 문제라고는 하지만 잘 생각해보면 굳이 스택을 사용하지 않아도 되는 문제입니다. 문제의 핵심은 결국 괄호의 특성을 이해하는 것이라고 생각합니다. 결국 괄호가 제 기능을 하기 위해서는 여는 괄호( 와 닫는 괄호) 가 1대 1로 잘 맞아 떨어져야합니다. 단순히 숫자가 맞아야하는 것이 아니라, 앞서 여는 괄호가 n개 나왔다면 뒤에 닫는 괄호는 여는 괄후 수만큼, 즉 n개가 나와야합니다. 생각을 해보면 스택을 이용하지 않아도 됩니다. 정수를 저장하는 변수를 선언하여 여는 괄호를 만나면 1 올려주고, 닫는 괄호를 만나면 1 내려주면 됩니다. 이 변수의 값이 0보다 작으면 바로 문제에서 설명하는 올바르지 않은 괄호 문자열(VPS)가 아닌게 되는 것입니다. 위에서 설명한 변수가 아래에서는 parenth..