일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 문법
- 이지스퍼블리싱
- 알고리즘
- Visual Studio
- c++
- doit코틀린프로그래밍
- Tips프로그래밍강좌
- Win32
- CS
- 연산자
- 김성엽
- 리뷰
- Javascript
- 배열
- 프로그래밍
- VS ERROR
- Desktop
- Windows
- 포인터
- Programming
- c
- Direct2D
- Tips강좌
- 지식나눔강좌
- 함수
- tipssoft
- Kotlin
- 백준
- 티스토리
- c#
- Yesterday
- Today
- Total
목록Tips프로그래밍강좌 (13)
F.R.I.D.A.Y.
개인사유로 인해 불참. 따라서 19기 자료로 대체https://pang2h.tistory.com/55?category=708837
1.상수 상수 : 컴파일러와 개발자 사이에서 약속된 값. 따라서 컴파일러는 이 값들을 기준으로 작업을 진행한다. 만일 값의 의미가 바뀌거나 값이 바뀌면 정상적으로 진행이 되지 않을 수 있다. 상수의 종류숫자형 상수> 정수>> 10진, 8진, 16진, 2진(옵션)>> 이들 상수는 첫자리가 무조건 숫자를 제공해야만한다. 변수와의 혼동을 줄이기 위해서다.>> 8진수는 과거의 잔재로서, 비트 패리티를 통해 오류검사를 위해 만들어졌다. 2^3이라서 8진수가 되었다.>> 16진수와 2진수의 변환은 굉장히 편하다.>> VS에서는 자동으로 16진법 표기로 볼 수 있다. >> 상수에 대한 자료형을 표한하기 위해 3L, 3LL 등으로 작성할 수 있다.>> VS에선 VS의 컴파일러인 MSVC의 전용 자료형으로도 작성할 수 ..
begin 스탭으로 활동하며 다시한번 리마인드 하기 위해 20기 수강생들 외에 개별적으로 작성하는 내용이기 때문에 수강생으로 있던 19기에 비해 좀 더 편하게 작성하는 편으로 갈 생각. 따라서 타인이 보기에 힘들 수도 있다고 생각함.1. 변수, 자료형이 만들어진 이유 일반적으로 프로그램은 [명령, 주소, 값의 크기, 값]으로 작성이 되나, 프로그래머가 프로그램을 작성할 때 메모리의 주소와 값의 크기 등을 모두 인지하고 있을 수도 없을 뿐더러 인지하고 있더라도 비효율적이기 때문에 자료형으로 값의 크기를, 변수로 메모리의 주소를 대체하여 메모리 주소와 값의 크기를 숫자고 작성할 때 발생 가능한 예기치 못한 문제를 사전에 해결하기 위해 변수와 자료형이 도입되었다. 데이터는 비트(bit)가 가장 작은 단위이지만..
1. 접근 제한자 이전 시간에 짧게 접근 제한자라는 것에 대해 언급한 적이 있다. C++의 클래스는 접근 제한자라는 것을 지원하는데 이 접근 제한자는 말 그대로 어떠한 대상이 접근하는 것을 제한하는 것을 의미한다. 아는 사람은 집에 들여보내주지만, 모르는 사람은 집에 들여보내주지 않는 것, 사적인 정보는 다른 사람들과 공유하지 않는 것과 마찬가지로 보면 된다. 접근 제한자는 다음과 같은것이 있다. 접근 제한자 의미 private 외부에서 멤버에 접근하지 못함. 클래스 내부에서만 사용 가능. protected 자신으로부터 파생되지 않은 외부에서 접근하지 못함. (제약적 개방) 자신과 자신으로부터 파생된 클래스 내부에서만 사용 가능. public 외부에서 멤버에 접근할 수 있음. (완전 개방) 외부에서 클래..
1. 구조체 정렬 구조체를 간단히 설명하면 변수들의 집합으로 보면 된다. 그렇다면 구조체의 크기는 어떻게 될까? 구조체 안에 선언된 변수 크기의 합일까? 반은 맞고 반은 틀리다고 볼 수 있다. 시대가 발전하면서 자료를 어떻게 다루어야 더 효율적으로 다룰 수 있는지에 대한 연구와 관련된 이론이 나오게 되었다. 현재의 구조체 크기도 이러한 발전의 결과물로서, 다음 코드를 보자. struct A { char a; // 1 Byte short c; // 2 Byte int d; // 4 Byte }; 다시, 위 코드에서 [ b ]변수를 지웠을 때, 네가지 정렬방식을 순서대로 도식화 하면 다음과 같아진다. Visual Studio의 경우에는 8바이트 정렬을 기본으로 한다. 설정을 바꾸고 싶다면 아래 옵션을 변경해..
1. typedef 이전에 [ #define ]에 대한 글이 한번 적혔다. 이번 [ typedef ]는 전처리기 구문인 [ #define ]과는 비슷하면서도 다르다. 차이는 후술하고 먼저 [ typedef ]에 대해 알아보자. [ typedef ]는 사용자 정의 데이터형을 생성하는 문법으로, C언어의 정식 문법이다. 기본적인 사용볍은 다음과 같다. #define _CRT_SECURE_NO_WARNINGS #include void PrintAge(unsigned char age) { printf("%hhu\n", age); } void InputAge(unsigned char *age) { printf("나이를 입력하세요 : "); scanf("%hhu", age); } int main(void) { un..
1. 프로그램? 프로세스? 어디서는 프로그램, 어디서는 프로세스라고 하는 경우가 있다. 컴퓨터에 큰 관심이 없는 사람들은 두 단어를 같은 개념으로 생각할 수 있지만, 실제로 두 단어는 다른 의미를 가진다. 프로그램>> 실행 파일, 확장자가 [ .exe ]로 이뤄진 파일을 말한다. 프로세스>> 실행 파일, 즉 위에서 프로그램이라고 했던 파일을 운영체제의 로더가 메모리에 불러올 때, CPU가 해당 파일에 있는 명령어를 실행할 수 있도록 재배치 해 적재된 것. 즉, 프로그램은 간단히 명령어의 집합을 파일로 구성해놓은 것이고, 프로세스는 이러한 파일을 실제 사용할 수 있도록 재구성한 것이라고 생각하면 된다. 운영체제의 로더가 파일을 불러오게 되면, 해당 파일은 메모리상에 몇가지 구조로 나뉘어 적재가 된다. 아래..
1. 포인터 상수 일반 변수와 마찬가지로 포인터도 선언시에 상수로 선언할 수 있다. 종류는 다음과 같다. void swap(int *pa, int *pb){ int temp = *pa; *pa = *pb; // check *pb = temp; } 두 변수의 값을 변경해주는 코드를 작성한다고 하면, 위 코드처럼 작성을 할 수 있다. 이 때, [ check ] 줄에서 [ * ]를 하나만 누락한 경우, 즉 pa = pb; //시맨틱 오류 발생. 이러한 문제를 해결하기 위해 [ pa ] [ pb ]의 값을 변경하지 못하도록 int *와 변수명에 const를 붙여준다. int *p1 = (int *)100; int *p2 = (int *)120; p2 - p1; //5 주의해야 할 점은, 포인터의 자료형이 다른 ..
1. 시프트 연산에서 주의아래 코드를 보자 a = a > 3; 밑줄 친 부분에서 이미 int로 캐스팅이 이뤄져 [ 0001 1011 ]를 5를 넘기면 [ 0110 0000 ]가 되는 것이 아니라 [ 0000 0000 0000 0000 0000 0011 0110 0000 ]( 864 )가 되고 여기서 다시 [ 0000 0000 0000 0000 0000 0000 0110 1100 ]이 되어 108이 된다. 즉, 연산과정에서는 [ int ] 형식으로 값이 처리되고 a에 집어 넣을 때 char로 형변환, 정확히는 LSB에 가까운 1 Byte에 해당하는 값만 저장되어 값이 달리 나오게 된다. 따라서 같은 값을 유도하고 싶다면 int data[2][3]; for (int i = 0; i < 2; i++) { fo..
1. 비트 연산자 비트 연산자란 어떤 값을 비트 단위로 계산하는 연산자로, 일반적인 연산자와 달리 각 비트끼리 연산을 행한다. 비트 연산자는 다음으로 이루어져 있다. 연산자 의미 예시 [식 - 결과] & 비트 AND : 두 값 모두 1이어야 1 반환 0101 & 1111 0101 | 비트 OR : 하나라도 1이면 1 반환 0101 | 1111 1111 ^ 비트 XOR : 서로 반대인 경우에 1 반환 0101 ^ 1111 1010 비트 연산자는 단항 연산자처럼 번역이 되기 때문에 이항 연산자에 비해 속도면에서 이득을 볼 수 있다. 비트 연산자를 사용하면 다음과 같은 문제도 풀 수 있다. Q. 몇 번째 비트가 켜져 있는가? (켜짐 : 1, 꺼짐 : 0) 다음과 같은 코드를 통해 몇번 비트가 켜졌는지 알 수 ..