본문 바로가기

전체 글

(392)
[C] 매크로와 매크로 함수 - 2 들어가며 전 시간에는 끔찍한 매크로 코드들의 향연으로 먹은 식사가 살짝 불편하지 않았던가? 오늘은 그런 걱정을 하지 않아도 된다. 왜냐하면 식사를 하지 않고 이번 글을 보길 권장하기 때문이다. 이미 식사를 하고 온 사람들은 가까운 병원에서 위장을 세척한 후 공복 상태에서 이 글을 정독하기 바란다. 매크로를 연속으로 정의하는 방법과 사용 이 글을 보고 있는 독자 여러분은 지금까지 숫자 한 개나 코드 한 줄을 매크로로 정의하여 사용해오지 않았는가? 사실 이 글은 나만 보고 있기 때문에 그렇게 사용해 온 것으로 간주할 것이다. 전적으로 내 마음이니 그저 따라오길 바란다. 각설하고, 그렇다면 여러줄을 매크로로 만든다면 상당히 편할 것으로 예상이 된다. #define INFO_FATALBLOW (코드 1)\ (코..
[C]매크로와 매크로 함수 - 1 들어가며 매크로란 무엇일까. 게임을 자주 해본 사람이나 접해본 사람들은 매크로를 다음과 같이 이해하는 경우가 많다. "매크로는 자동사냥 같은 거 말하는 거 아냐?" 그것에 관한 것은 잘 모르겠고, 나는 프로그래밍에 관해서 얘기할 예정이다. 매크로(Macro) #define (매크로 이름) (설정할 값) 먼저 쉽게 말하자면 #define 지시자를 사용하여 값을 다른 이름으로 정의한다. 이름을 정하는 방법은 변수와 동일하며, 관습적으로 매크로의 이름은 대문자를 사용한다. 뭔소린지 모르겠다고? 나도 그렇다. 함께 알아보는 시간을 오붓하게 갖도록 하자. 사직서의 활용 자 다음의 코드를 보자. int Damage(int atk) { if(100
[C] 상수와 리터럴 상수(a constant) 상수는 말 그대로 '변하지 않는 값'을 의미한다. 변수는 선언 후 그 값을 계속 바꿀 수 있지만, 상수는 처음 선언할 때만 값을 초기화 할 수 있고, 이후엔 초기화할 수 없다. 리터럴(literal)과 표기 방법 리터럴을 직역하면 '문자 그대로'라는 뜻인데, '그 값 자체'를 의미한다. printf("%d\n", 10); // 10 - 정수 리터럴 printf("%f\n", 0.1f); // 0.100000 - 실수 리터럴 printf("%c\n", 'a'); // a - 문자 리터럴 printf("%s\n", "Hello, world!"); // Hello, world! - 문자열 리터럴 위 코드와 같이 값을 변수에 저장하지 않고 바로 출력하는 것. 소스 코드 상에서 출력값을..
[C]포인터의 이해와 활용-2 다양한 자료형의 포인터 선언 const int num = 10; // int형 상수 const int *numptr; // int형 상수를 가리키는 포인터 // int const *numptr과 같은 의미다. numptr = # *numptr = 20;// 컴파일 에러 발생. num이 상수이므로 역참조하여 값을 변경할 수 없음. 위 코드들에서는 'int형' 포인터들을 선언하였다. 하지만 포인터에는 그보다 훨신 다양한 자료형들이 있는데, 심지어 'void'형 자료형도 있다. #include int main() { long long *numptr1; // long long형 포인터 변수 선언 float *numptr2; // float 형 포인터 변수 선언 char *cptr; // char 형 포인..
[C++]헤더 선언에서 <iostream.h>와 <iostream>의 차이 입출력 헤더 와 C++에서 가장 기본적인 입출력 헤더는 이다. 분명 C를 처음 배웠을 때, 나를 비롯한 대부분의 초심자들에게 가장 익숙한 헤더는 일 것이다. C++을 공부하는 지금, 왜 C++에서는 라고 사용하지 않는 것일까? 하는 의문이 들었다. 과 의 차이 간단히 말하자면 , 는 1998년 이전(C++ 표준안 확립 이전)의 관습적인 형태의 헤더 선언 형식이다. 은 1998년 이후(C++ 표준안 확립 이후)의 새로운 형태의 헤더 선언 형식이다. 더 정확하게는, 구성 요소들이 std 이름 공간(name space)에 소속되어 있는가 아닌가의 차이이다. 바뀌게 된 근본적인 이유? 최초의 표준안 논의 과정에서 '이름 공간(name space)'가 포함되었고, 모든 표준 라이브러리의 요소들을 std 네임 스페..
[C]포인터의 이해와 활용-1 들어가며 자, 블로그를 시작하고 거의 처음 쓰는 글이다. 많이 미숙하고 오류가 있는 부분들도 있을 수도 있고 그날 점심으로 스파게티를 거하게 먹었음을 추리할 수도 있다. 하지만 참고 양해 바란다. 어차피 나 혼자 보는 일기장이기 때문이다. 각설하고, 방학을 의미있게 보내기 위해 C언어의 꽃, 포인터를 학습하려고 한다! &(참조 연산자, 주소 연산자) 변수의 메모리 주소를 구할 때는 변수의 이름 앞에 '&'를 사용한다. int main() { int num = 0; printf("%p \n", &num); //이때 저 &num은 num이 저장된 메모리 공간 상의 주소값을 가리킨다. //다시 한번 말하지만 '가리키는 것'이다. return 0; } *(포인터 연산자) 포인터 변수를 선언할 때는 포인터의 이름..
[C++] printf와 scanf를 대신하는 입출력 방식 C언어를 공부한 경험이 있었다. 지금은 고3 겨울방학, 아직 졸업을 앞둔 상태에 다시 내가 하고 싶은 공부인 프로그래밍을 하기로 결심했다! 하지만 수험생 시절 동안에 나는 C++은 고사하고 C도 제대로 공부하지 못 해서, 비주얼도 제대로 못 다룰 아주아주 미숙한 실력만 쬐끔 남았네.. 아무튼 C를 꽤나 알고 있었던 덕에 C++로 다시 시작하고자 한다! #include int main() { int num = 20; std::cout
블로그의 시작 2020년 1월 9일 19시쯔음에 앞으로 취직과 진로에 도움이 될 수도 있는 포트폴리오 등의 여러 이유로, 프로그래밍과 게임 기획에 관련한 티스토리 블로그를 시작한다! 앞으로 알차게 채워나가자ㅏㅏㅏ