전처리기 -전처리기란 컴파일러가 소스 파일을 컴파일 하기 전에 사용자가 지시한 작업을 먼저 처리하는 것 이다. 전처리기의 특징 -C 언어는 전처리기를 사용하여 그 능력과 표기법을 확장한다.-#으로 시작하는 행을 전처리 지시자라고함ex) #include.. #define.. #if..등-전통적인 C에서는 첫 번째 열에 #이 와야 한다.-전처리기는 C를 알지 못한다.-세미콜론; 이 없다.-파일 처리를 위한 전처리기 문 : #include -형태 정의를 위하 전처리기 문 : #define, #undef-조건 처리를 위한 전처리기 문 : #if, #ifdef, #else, #elif, #edif-컴파일 옵션 처리를 위한 전처리기 문: #pragma #include 미리 정의된 include 폴더에서 파일을 찾는..
프로젝트 이름 : 효민타자연습기 프로젝트 주제 : 영어타자 속도를 늘릴 수 있는 영타자 게임 만든 동기 : 입학 후 영타가 느려 영타연습을 많이 했는데 영타자 연습 겸 타자게임을 만들어 보고 싶어서 만들었다. 게임 소개 : 화면에서는 색깔이 다른 영단어들이 사방팔방 뜨게 된다. 색깔마다 점수 배점이 다르고, 사방팔방 단어가 계속 뜨는 동안에 입력을 해서 화면에 뜬 단어를 없애고 점수를 얻는다. 점수는 왼쪽 상단에 표시가 된다. 그리고 메인 메뉴에서 도움말과 나의 최고 점수를 확인 할 수 있다. 기존 최고 점수보다 게임 점수가 높다면 최고 점수는 갱신이 된다. 게임은 30초 동안 진행되고 30초가 지나면 메인 메뉴로 돌아가게 된다. 게임 화면 : 게임 초기 화면 게임 실행 중 화면 게임 도움말출력 과 입력..
기계 : 사람이 원하는 작업을 수행하기 위해 동력을 제어하고 관리하는 장치 프로그램 : 사람이 원하는 동작을 기계가 수행할 수 있도록 구체적으로 실행 가능한 명령들을 순서대로 작성한 것 컴퓨터 프로그램 : 컴퓨터를 동작시킬 수 있는 프로그램-사람이 원하는 작업을 할 수 있도록 명령들을 모아 둔 것 프로그래밍 : 프로그램을 작성하는 작업 코딩 : 컴퓨터가 수행 할 수 있는 암호화 된 코드를 작성하는 것. 프로그램의 좁은 의미와 넓은 의미 좁은 의미사람이 작업을 수행할 수 있도록 명령어들의 순서를 설계, 작성, 테스트 하는 것.프로그램 설계, 작성, 테스트 넓은 의미원하는 작업을 수행하지 못한 경우 오류를 찾는 디버깅, 프로그램 개선, 보완 등의 작업을 포함하는 것.프로그램 디버깅, 개선 및 보안 언어 : ..
포인터란 자료가 저장되는 기억장치의 기억주소를 가리키는 지시자로써 포인터는 다른 기억장소의 자료를 참조하는데 사용되는 데이터입니다. 1. 포인터를 써야 하는 이유 어떠한 변수이든지 어떠한 버퍼를 할당 받아서 사용하는데, 모든 변수의 저장과 참조는 변수가 저장될 혹은 저장된 주소를 알아야 가능하다. 그래서 컴퓨터는 변수를 참조할 때 그 변수가 저장되어 있는 주소를 먼저 찾아내고 그 주소가 가리키는 내용을 참조하게 된다. 이렇게 변수의 주소를 저장하거나 사용하기 위한 변수가 포인터이다.포인터를 사용하면 간결하고 효율적인 표현과 처리가 가능하고 더 빠른 기계어 코드를 생성할 수 있으며, 복잡한 자료 구조(배열, 구조체 등)와 함수의 쉬운 접근이 가능하다. 또한 포인터를 사용하지 않았을 때 코드로 표현할 수 없..
정적변수(static) : 정적으로 할당되는 변수이다. 정적변수의 특징 - 지역 변수와 전역 변수의 성질을 같이 가지고 있다.- 지역 변수처럼 선언 된 함수 안에서만 사용이 가능하다.- 전역 변수처럼 프로그램이 종료 될 때까지 메모리 공간에 존재하게 된다.- 지역 변수와는 달리 해당 함수가 반환을 하더라도 소멸되지 않는다. C 및 관련 언어에서는 정적 변수와 기타 개념들 모두 static 키워드가 사용된다. 정적 변수 예제 #include void increase() { int num1 = 0; // 변수 선언 및 값 초기화 printf("%d\n", num1); // 변수 num1의 값을 출력 num1++; // 변수의 값을 1씩 증가 } int main() { increase()..
재귀 함수 : 자기 자신을 호출하는 함수 재귀 함수를 배워야 하는 이유 : 나중에 자료 구조나 알고리즘이 복잡한 문제를 단순화하는데 유용하게 쓸 수 있다.(정올에 많이 나온다..) 재귀 함수의 특징 1. 무한 루프를 막기위해 재귀 함수 끝을 정해줘야 한다.2. 코드를 단순화 하기 유용하다.3. 재귀 함수는 호출 시 마다 스택 공간을 이용해 무리하게 호출하면 오버플로우가 일어날 수 있다.4. 디버깅 밒 실행 흐름을 파악하기 힘들다. 재귀 함수의 예 – 팩토리얼 int factorial(int n){ If(n
- ebp change
- TLS
- 해킹
- fastbin
- SQLi
- tcache
- oob
- FSB
- hacking
- pwnable.tw
- pwnable
- stack reusing
- exit
- overflow
- glibc
- 본선가고싶다
- pwable
- srop
- heap
- HackCTF
- codegate
- fastbindup
- shellcoding
- fsop
- rt_sigreturn
- Total
- Today
- Yesterday