프로그래밍 (26) 썸네일형 리스트형 [C++] Call-By- ······ 그게 뭔데 들어가며 원래는 본격적으로 참조자의 활용에 대해 학습할 시간이지만, 오늘 배울 이 개념을 확실하게 잡고 가지 않으면 안된다. '또,또,또,또,또, 지만 아는 거 나왔다고 신났죠?' 누누히 말하지만 이 블로그가 누구한테 보여지는 것을 상정하고 본 필자가 글을 쓰는 것은 아니기 때문에 혼자 공부하는 느낌으로 운영하는 블로그다. 실제로는 꽤 보는 사람이 있는 거 같지만, 어찌 되었던 간에 내 일기장을 누가 보는 느낌이라고 생각하면 편하다. 각설하고, 사실 참조자의 활용에는 함수가 큰 지분을 차지하고 있기 때문인데, 따라서 오늘은 함수의 호출 방식에 관한 것을 학습해볼까 한다. 함수 호출의 두 가지 방식 'Call-By-Value & Call-By-Reference' 어디서 분명 많이 들어본 구절이다. 포인터를.. [C++] 이명제조기, 참조자 - 2 들어가며 자 이번 시간을 끝으로 개념적인 참조자의 설명은 끝이 난다. 그 말은 즉, 아직 참조자에 대해 알아야 할 것들이 많이 남아 있다는 소리다. 지금까지 설명한 것만 가지고 참조자를 어디다가 실용적이게 잘 써먹어 봐라! 라고 한다면 너무 무책임 한 것이 아닌가. 그렇기에 우린 좀 더 참조자에 대해서 알아볼 필요가 있다. 분명 어딘가에 써먹지 않겠는가? 참조자의 개수의 제한 결론부터 말하자면, 그런 거 없다. 즉, 다음과 같이 여러 개의 참조자를 선언하는 것도 가능하다. int num1 = 1; int& num2 = num1; int& num3 = num1; 이렇게 된다면 num1의 메모리 공간에 num2와 num3라는 이명이 붙은 것이 되고, num2와 num3를 이용하여 num1의 메모리 공간에 접.. [C++] 이명제조기, 참조자 - 1 들어가기 전에 반갑다. 여러분들은 프로그래머의 길을 걷고 있지 않은가? 컴퓨터를 다루는 모든 IT관련 직종의 필수 기본 소양 패시브가 있다. Passive - 항시 저장 본인은 이 글을 한 번 날린 전적이 있다. 아 들어가며 참조자(Reference). 프로그래밍을 공부하려는 사람이면 어디선가 많이 들어본 키워드다. 이름만 들어서는 어디다 써먹을지, 무슨 개념인지 감이 잘 오지 않는다. 오늘은 이 녀석이 뭐하는 놈인지를 함께 알아보는 시간을 갖도록 하겠다. 오늘 공부할 '참조자'라는 녀석은 성격상 '포인터'와 비교되기 쉬운데, 참조자는 포인터를 모르더라도 이해할 수 있는 개념이다. 따라서 굳이 포인터의 개념을 끌어와다가 이해하겠답시고 자신을 괴롭히지 않았으면 한다. 그런데 사실은 참조자도 내부적으로는 포.. [C++] 자료형계의 이단심문관, bool 들어가며 오늘은 모순에 관하여 얘기할까 싶다. 마침 bool형 자료형도 참과 거짓을 구분하는 자료형으로 주제와도 어느 정도 공통점을 가진다. 모순, 어딜 봐도 딱히 좋은 이미지의 단어는 아니다. 사람에게 적용해보면? 딱 혼자 다니기 좋아 보이는 성격이지 않은가? 우린 솔직해 질 필요가 있다. 우리가 살아가면서 인생에 단 한 번도 모순적인 태도를 보인 적이 없을까? 우리 모두는 모순적인 사람이다. 하지만 우린 한 가지 관점에서만 바라보기에 부정적인 프레임에 갇혀있는 것이다. 우린 게으른 프로그래머가 되기 위해 성실히 공부한다. 게으르기 위해 성실해진다. 완벽한 모순이다. 마치 0과 1의 상태가 중첩된 양자컴퓨터의 CPU의 단자 한 구석처럼 우리 인간은 그런 양자적 상태에 자주 놓이게 된다. 우린 솔직해질 .. [C++] 이름 공간(Name space) - 2 들어가며 오랜만이다. 꽤 며칠동안 글 써야지 써야지 각만 재다가 각만 쟀다. 사실 병원이다, 졸업식이다, 설이다, 요다, 소다, 뭐다 아무튼 마냥 놀기만 한 것은 아니었다. 나름 따로 시스템 기획 공부도 찬찬히 하고 있었으니 나름의 합리화를 해본다. 아무튼 오늘의 주제 '이름공간'에 관하여 공부해 보겠다. 솔직히 이제 20살인데 좀 놀아야지. 안 놀면 청춘 낭비지. 이름 공간의 중첩 이름 공간의 마지막 특성인 '중첩'이다. 이름 공간은 다른 이름 공간 내부에 삽입 될 수 있다. 즉, 다음과 같은 형태로 중첩이 가능하다. namespace Brain { int Lv = 1; namespace Dopamine { int Lv = 2; } namespace Serotonin { int Lv = 3; } nam.. [C++] 이름 공간(Name space) - 1 들어가며 오늘은 '이름 공간(Name space)'에 관하여 알아볼 생각이다. 말 그대로 공간에다가 이름을 갖다 붙인다는 것이다. 공간이라고 하니까 생각난 것인데, 보편적인 학생의 방을 떠올려 보자. 방에는 침대가 있고, 옷장이 있으며, 책상 등등의 가구가 배치되어 있다. 왜 많은 사람들은 집의 테이블이나 책상을 놔두고 굳이 독서실이나 스터디 카페를 찾을까? 왜 서제와 침실을 분리해 놓을까? 우린 어떤 행동을 할 때 최대의 효율과 집중력을 발휘하기를 바란다. 침대 옆에서, 컴퓨터 옆에서 공부하다가 정신 차려보면 드러누워서 잔다거나, 소환사의 협곡에서 정의를 지키고 있는 자신을 발견한 경험이 없잖아 있을 것이다. 이처럼 우린 다른 요소로부터 방해받지 않고 하고자 하는 행동을 하기 위해 역할마다 공간을 분리.. [C++] 인라인과 인라인 함수 들어가며 이번 시간에는 '인라인' 에 대하여 알아볼 생각이다. 인라인이라고 하면 무엇이 생각나는가? 그렇다! 모두가 알고, 땅이 알고, 하늘이 아는, 바로 '인라인 함수'다! 혹시 '인라인 스케이트'를 생각하였는가? 그렇다면 정신차리자. 지금 우린 공부하기 위해 이곳에 있는 것이다. Key Word - inline 한번 간지나게 영어로 표지글을 써봤다. 키워드 'inline'은 전에 배웠던 'macro'와 유사한 특징이 다수 존재한다. 우선 인라인 키워드를 사용하는 방법은 다음과 같다. inline (Return Data type) (Function name) (Parameter Data type Parameter name) 한번 간지나게 영어로 써봤다. 이정도 쯤이야 현대를 살아가는 우리들에겐 모국어와.. [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 네임 스페.. 이전 1 2 3 다음