전체 : 4,150,784 명
어제 : 0 명
오늘 : 0 명

C++ 강좌 #2 C++언어의 기본적인 구조

진혼이중주 | 2008.05.28 10:49 | 조회 5970
제작자 세이버

/* Hello world!! 메세지 뛰우기 */

#include

int main(void)

{

std::cout << "Hello world!!" << std::endl ; //메세지의 출력

return 0 ;

}

모든언어에서 기본 베이스가 되는건 함수이다. 펑션 또는 루틴이라고 불리기도 한다.

이건 어셈블리언어에서도 예외는 아니다.

함수의 형태는 다음과 같다.

리턴 함수이름(입력)

{

함수 기능

}

다음과 같이 나타낼수 있다.

그렇다면

int main(void)

{

std::cout << "Hello world!!" << std::endl ;

return 0 ;

}

함수라는 것이다.

일단 int이니 void이니 이런건 미뤄두도록 하자.

여기서 main이란건 함수의 이름이라는 걸 알수 있다. 콘솔프로그래밍에서 프로그램의 사작점은 언제나 main이다.

물론 윈도우 프로그래밍을 할때의 시작점은 WinMain이다. MFC에서는 WinMain이 가려져 있지만 시작점은 역시 WinMain이다.

{} <- 이것은 함수의 몸체라고 할 수 있는 함수의 영역을 표시 한다. 그리고 이안에 있는 문장들이 함수의 기능들을 말할 수 있다.

출력한다거나, 입력한다거나. 이런것들이 전부 함수의 기능이라고 할수 있다.

그럼 int이니 void이니이런걸 알아보도록 하자

int는 현재 32비트 운영체제에서 대부분의 컴파일러에서는 4바이트로 처리되어 있다.

int니 이런것들은 c/c++언어에서는 기본 자료형이다. 즉 프로그래머 자신이 꾸민 자료형이 아니라 c/c++자체에서 내어주는 자료형이다.

그리고 정수형 자료형에는 다음과 같은 것이 있다.

자료형 메모리의크기 표현가능한 숫자의 크기

char 1바이트 -128 ~ +127

unsigned char 1바이트 0 ~ +255

short 2바이트 -32767 ~ +32768

unsigned short 2바이트 0 ~ +65535

int 4바이트 -2147483648 ~ +2147483647

unsigned int 4바이트 0 ~ +4294967295

가만히 보면 unsigned가 붙으면 음수는 표현할수 없는 대신 양수의 표현가능한 범위는 더욱 커지는걸 볼수 있다. 이에 대한 이야기는 일단 나중으로 미루도록 하자.

그런데 Turbo c에서는 int를 2바이트로 처리하고 있다. 엣날의 표준은 int는 2바이트였으니까.

또한 자료형에는 정수형만 있는 것이 아니다 실수형도 있다!

자료형 메모리 크기 정확도

float 4바이트 소수이하 6째자리

double 8바이트 소수이하 15째자리

long double 8바이트 혹은 그 이상 소수이하 15째자리 혹은 그 이상

실수의 연산은 컴퓨터에게는 매우 부담스럽다.

그래서 컴퓨터 속도의 측정의 도구로 슈퍼파이라는 프로그램으로 파이연산을 하고 하지 않는가!?

또한 각 cpu의 회사들은 자신의 부동소숫점계산을 통한 시간을 통해 성능의 좌표로 삼기까지 한다.

중요한건 정확도이다. 자료형의 크기가 그이상은 담을수 있다고 해도 정확도의 범위까지 물러서면 안되겠다.

또한 실수의 연산은 컴퓨터에 어느정도의 부담을 안겨준다. 보라 소모되는 최소단위의 실수 자료형만 하더라도

int에 맞먹지 않는가?

그러니 너무 남발하는건 프로그램의 속도를 떨어뜨릴 우려가 있으니. 적절히 사용하도록 하자.

일단 자료형과 변수는 땔수가 없는데 그것은 나중에 이야기 하도록 하자

그리고 자료형과 별개로 void라는 키워드가 있는데 이것은 아무것도 받지 않는다. 라는 뜻도 되고 아무것도 리턴하지 않는다라는 뜻도 된다.

포인트일경우에는 가르키는 자료형의 크기를 지정하지 않는다라는 뜻도 되는데 이것은 일단 나중에 이야기 하도록 하자 (대부분 뒤로 빼고 있다 -_-;)

어쨋든 int main(void)라는 함수를 해석하자면 함수가 시작하면서 인자를 받지 않고 4바이트 정수를 리턴하는 함수라고 말을 할수 있다.

그럼 리턴이라는 의미에 대해서 알아보도록 하자 return 0; 사실의 리턴이라는 의미는 크게 두가지를 지니고 있다.

1. 함수의 종료

2. 값의 반환

즉 일단 함수를 진행하다가 return 이라는 것을 만나면 그건 때려죽여도 그 함수의 종료를 뜻한다. (main함수일경우는 프로그램 자체의 종료를 뜻하게 된다.)

그리고 값의 반환이라는건 아직은 이야기하기가 좀 빠르다. 이 부분은 서브함수에 대해 이야기를 하다보면 알수 있다.

어쨋든 여기서 위의 헬로우 월드 메세지를 출력 하는 함수에서 return은 함수의 종료 그것은 곧 프로그램의 종료를 뜻하게 된다.

; <-이라는 문자가 종종 눈에 보인다. 이것은 세미콜론이라고도 부르며 그줄에서의 명령의 끝을 의미하며 명령과 명령사이를 구분짓는 단위가 된다.

; <- 보통 다음에는 명령어가 오지 않는다. 예외가 있다면 for라는 반복문이라고 할수 있겠다. 이것역시 다음으로 미루도록 하자.

std::cout << "Hello world!!" << std::endl ;

std::cout << 이나

std::endl<< 이부분에 어느정도의 이해를 할려면 연산자 오버로딩을 알아야 한다.

"Hello world!!" 은 문자열 상수이다.

"" 이렇게 큰따옴표로 문자열을 나타내고 있다.

상수나 변수나... 이런것에 대해서는 다음 파트로 넘기겠다.

그럼 일단 이렇게 생각하도록 하는게 편하게겠다.

std::cout 는 모니터라고 생각 하자.

<< 이 표시로 "Hello world!!" 을 모니터로 보내준다고 생각을 하자. 그러면 일단은 사용하는데 불편함은 없을 것이다. 그리고

std::endl 은 End line의 약자이다. 즉 다음줄로 넘긴다고 한다. 이외에는 버퍼를 비운다는 개념도 있지만 이것도 지금 당장은 알필요가 없다.

그리고

std::endl

std::cout

이런건 iostream이라는 헤더파일에 있는 것들이다. 그럼 당연히 iostream라는 헤더파일은 연결 시켜야 하지 않겠는가?

바로 그것이 다음의 문장이다.

#include

#이라는 말은 전처리기라고도 부르기도 하는데 이것역시 다음으로 넘기겠다.

어쨋든 #include <>은 헤더파일을 연결하는거다! 라고 알아두자. 한가지 덤으로 #include <>는 컴파일이 가지고 있는 표준 헤더파일디렉토리를 기준으로 한다.

#include ""는 사용자가 만든 헤더파일은 연결한다는 것을 알아두자.

그럼 마지막의 주석문에 대해 알아보자.

주석문은 컴파일러가 컴파일을 할때 주석부분은 아에 무시한다.

그럼 당장생각해보면 필요없을것 같지만 그 중요성은 다른 문법들도 무시를 못한다.

그것은 주석은 프로그래머의 편의를 위해 만들어진 기능이기 때문이다.

주석으로 중요한 사항들을 기록하고 헷갈릴 것 같은 코드에 코멘트를 붙혀 가독성을 높혀준다.

주석문법은 크게

//

/* */

과 같이 나눠지게 되는데

//은 이후에 있는 그줄에 있는 걸 무시하게 된다.

i+a ; // 매롱

//매롱은 컴파일러는 아무런 신경을 쓰지 않고 i+a라는 문장만 컴파일 하게 된다.

하지만 중의할것은 그 다음줄로 넘어가면 바로 //주석의 효과는 바로 사라지게된다는 것이다.

/* */은 /*가 시작하고 나서 */가 나올때까지 그안에 있는 모든걸 무시하게된 즉 다음과 같은 주석 효과도 기대할수 있다.

/*

이것은 주석입니다.

컴파일러는 이것을 인식하지 못해요

*/

줄에 관계없이 /*이 시작되면 */을 만나기전까지 모든것을 무시하게 된다.

이상으로 헬로우 월드 메시지를 출력하는 소스코드의 분석은 끝났다. 이후 다음장에서는 연산자와 변수에 대해 이야기 해보도록 하자.

twitter facebook me2day 요즘
프로그램의 사<<오타네요
프로그램의 사<<오타네요
06.11 21:16 | Нyan™님 | 신고 | 수정 | 삭제
댓글 0
입력상자 늘리기
잘보았습니다.

잘보았습니다.

08.12 22:11 | 리눅시아이님 | 신고 | 수정 | 삭제
댓글 0
입력상자 늘리기
잘보고 갑니다~

잘보고 갑니다~

09.21 10:16 | xSigx님 | 신고 | 수정 | 삭제
댓글 0
입력상자 늘리기

11.01 00:08 | root1님 | 신고 | 수정 | 삭제
댓글 0
입력상자 늘리기
이중연산자 오버로딩 공부 했는데 우와 토나온다는...
이중연산자 오버로딩 공부 했는데 우와 토나온다는...
02.18 09:39 | 물티슈님 | 신고 | 수정 | 삭제
댓글 0
입력상자 늘리기
ㅎㅎ잘 보고가요^^
ㅎㅎ잘 보고가요^^
05.12 17:55 | 고로님 | 신고 | 수정 | 삭제
댓글 0
입력상자 늘리기
댓글쓰기 - 로그인한 후 댓글작성권한이 있을 경우 이용하실 수 있습니다.

비밀번호 확인

댓글 등록시에 입력했던 비밀번호를 입력해 주세요.
87개(1/5페이지)
rss
C
번호 제목 작성자 작성일 조회
87 배열설정 쉽게하기 부보 2012.12.22 2092
86 [고급]연습문제[11] 권율 2010.01.10 9552
85 [고급]C언어에서 포인터 이용한 간단한 암호 ~[8] 쫭구 2009.11.11 9380
84 [중급]BOF의 개념과 BOF를 이용한 해킹 방법[10] Ezbeat 2010.03.19 10144
83 [중급]ReadProcessMemory & WriteProcessMemory사진[8] COOLSOFT 2009.06.04 9942
82 [기초]C언어의 탄생 배경[20] COOLSOFT 2007.11.03 9984
81 [기초]비주얼 C++ 설치하기사진첨부파일[15] COOLSOFT 2007.10.27 7156
80 [기초]Microsoft Visual C++ Windows Applications by Example첨부파일[4] COOLSOFT 2009.04.03 7327
79 [기초][TIP]swap함수 매크로 한줄로 끝내기[9] secretofsh 2009.03.05 10507
78 [기초]c# 화면캡쳐프로그램 -소스포함 |첨부파일[12] 야옹이 2008.12.25 12861
77 [기초]주민번호를 만들어내는 규칙에 대해서 설명과 소스[26] COOLSOFT 2008.07.12 10111
76 [기초]윈도우 기본 창 생성 소스 -주석 포함-[7] 진혼이중주 2008.05.31 10801
75 [기초]WIN 32 API 시작하기전에 간단히 알아두기[10] 진혼이중주 2008.05.31 9389
74 [기초]c++ 강좌 #3 변수와 상수 (1)[15] 진혼이중주 2008.05.28 8855
>> [기초]C++ 강좌 #2 C++언어의 기본적인 구조[6] 진혼이중주 2008.05.28 5971
72 [기초]C++ 강좌 #1[12] 진혼이중주 2008.05.28 6747
71 [기초]리스트 자료구조의 기본적인 개념[3] 진혼이중주 2008.05.16 7976
70 [기초]두 자리 수 이상의 곱셈에 대한 알고리즘[5] 진혼이중주 2008.05.16 7202
69 [기초]Turbo 2.0 설치 및 사용법첨부파일[2] 진혼이중주 2008.05.16 8865
68 [기초]삼성 프로그래머들의 C/C++ 코딩 스타일의 지침서첨부파일[41] 진혼이중주 2008.05.05 15445
처음페이지이전 10 페이지12345다음 10 페이지마지막페이지