개인적인 생각이지만, C언어에서 포인터는 반드시 알고 가야 할 키워드 중 하나인 듯 싶습니다. ps에서 그렇게 많이 사용하지는 않았는데, 상당히 중요한 부분을 차지하고 있기도 하고, 심지어 어느 교재에서는 이것만을 중점적으로 다루는 책도 있을 정도이니 말을 다 한 셈입니다. 오늘 배울 것은 주솟값을 얻어오는 &와, 역참조를 하는 *만 배워볼 겁니다. 사실 이것만 제대로 익혀도 포인터의 50% 이상은 정복했다고 봐도 과언이 아니기 때문입니다. 예제 두 개만 봅시다. 뭔가 복잡해 보입니다? 하나 하나 천천히 봅시다. 먼저 int 형 변수 a를 선언했습니다. 그러면 메모리 상에는 다음과 같이 그려질 겁니다. 아래 그림을 보면, 0x80번지에 a가 할당되어 있음을 알 수 있는데요. 그러면, 0x80번지에 a를 ..
코딩/C 검색 결과
제목에도 달았다 시피, c언어에서 enum은, 의미를 명확하게 하기 위해서 쓰입니다. 저번 시간에 했었던, student를 예로 들어 봅시다. student에는, 이름과, 과목별 점수가 있었을 겁니다. 단순하게, "chogahui"라는 이름을 가지는 학생이, 과목 1번부터 과목 5번까지 몇 점을 맞았는지를 출력해 주는 함수입니다. 여기까지만 보면 그렇게 어려울 거 같지는 않습니다. 그런데, 이런 경우를 생각해 봅시다. chogahui의 Korean 점수는 몇 점이고, Math 점수, English 점수는 각각 몇 점일까요? 이걸 제 1과목, 2과목, 3과목으로 접근하기는 헷갈릴 여지가 다분합니다. 그러면 이걸 어떻게 해야 할까요? 보통, 과목은 subject_code로 불립니다. 그리고, 이 안에, KO..
요새 js를 천천히 공부하느라, 블로그에 글을 잘 못 쓰고 있습니다. 오랫만에 온 듯 싶네요. 오늘은 구조체에 대해서, 간단하게 알아보도록 하겠습니다. 어떤 상태가 있습니다. 그런데, 이것을 여러 속성으로 표현을 해야 할 때가 있어요. 예를 들자면, 현재 좌표를 표현하려고 할 때, 1차원이면 x 하나만 있으면 됩니다. 그런데, 2차원이면 x, y 두개가 있어야 하고, 3차원이면 x, y, z 이렇게 3개가 있어야 합니다. 이들을 어떻게 잘 묶을 방법이 없을까요? 이를 위해서 구조체를 쓸 수 있어요. 보통 이렇게 많이 씁니다. 이것만 보아서는 잘 이해가 가시지 않을 듯 싶으니, 백준에 있는 17143번, 낚시왕을 예로 들어서 설명해 보도록 하겠습니다. 문제 상황은, 다음과 같습니다. 먼저, 낚시왕이 우측으..
C언어에서 static 변수는 특이한 속성을 가지고 있습니다. 반절 정도는 지역 변수, 반절은 전역 변수 속성을 지니고 있는데요. visible한 범위는 블록 내이지만. 메모리는 프로그램이 종료가 될 때 까지 해제가 되지 않아요. 의외로 많은 함수들이, 내부에서 static, 그러니까 정적 변수를 쓰기도 합니다. 레퍼런스 시간에 몇 번 언급을 했을 거에요. 예제 프로그램 1개만 분석해 보겠습니다. 먼저 main 함수는 foo를 2번 호출합니다. 다음에, foo는 정적 변수인 atari를 가지고 있는데요. 10번째 줄에도 선언이 되어 있고, 12번째 줄에도 선언이 되어 있습니다. 10번째 줄과 16번째 줄에 주석이 달려 있네요. 일단 프로그램을 실행해 봅시다. atari 라는 변수가 not decleare..
오늘은, 간단하게 지역변수에 대해서 알아보도록 하겠습니다. 그 전에, 변수를 visible 할 수 있는 범위, 즉 scope하고, life time에 대해서 집중적으로 보도록 합시다. 8번째 줄에 정의된 t는 어디에 선언이 되었나요? foo 라는 함수 내부에 정의가 되었습니다. block 내부나, 프로그램 단위 (함수)에 정의된 변수들을 지역 변수라고 부릅니다. 그러면, 이것이 어떠한 특징을 가지는지, 위에 있는 코드를 한 번 실행해 봅시다. 결과가 0이 나오는데요. 차근 차근 설명해 보겠습니다. 먼저, 4번째 줄의 int t = 0; 이라는 문장을 실행하면, 변수 t에 0이 대입이 됩니다. 그러면 이렇게 상황을 그릴 수 있습니다. 다음에, foo(t)를 호출하게 되는데요. 6번째 줄에 보면 매개변수 a..
최근댓글