디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

C와 cpp의 차이점?

연화갤로그로 이동합니다. 2009.07.28 01:04:32
조회 53 추천 0 댓글 0

C는 C++가 구축된 기반입니다.

이것은 일반적으로 어떤 C프로그램도 자동적으로 C++프로그램(객체 지향이 아닌)이 된다는 것을 의미합니다.

그러나 C++가 객체 지향 프로그래밍을 지원하고 이러한 지원에 내재된 의미 때문에, C와 C++사이에는

약간의 차이점이 존재합니다.



C와 C++간의 가장 중요하고 미묘한 차이점들 중 하나는 C에서 다음과 같이 선언된 함수가 그 함수의

매개변수에 대해 어떤 것도 언급하지 않는다는 사실입니다.

int f();

즉, 함수 이름 다음에 있는 괄호 안에 아무것도 명시되어 있지 않을 때, C에서 이것은 그 함수의

매개변수에 대해서는 아무것도 말할 수 없다는 것을 의미합니다. 이 함수는 매개변수를 가지고

있을 수도 있고 매개변수를 가지고 있지 않을 수도 있습니다. 그러나 C++에서 이와 같은 함수 선언은

함수가 매개변수를 갖지 않다는 것을 의미합니다. 즉 C++에서 다음의 두 선언은 같죠.

int f();
int f(void);

C++에서 void는 선택사항입니다.


C++에서 모든 함수는 원형으로 정의되어야만 합니다. C에서 이것은 선택사항이나 C프로그램에서도

원형을 정의하는 것이 좋은 습관이죠.


C와 C++사이의 작지만 잠재적으로 중요한 차이점은 C에서는 문자 상수가 자동적으로 정수로 바뀌지만

C++에서는 그렇지 않다는 것입니다.


C에서는 전역 변수를 여러번 선언하여도 에러가 아니지만, C++에서는 에러입니다.


C에서는 처음 31문자만이 식별자로 유효합니다. C++에서는 적어도 처음 1,024문자가 유효하죠.

그러나 실용적인 관점에서 볼 때 긴 식별자는 다루기도 어렵고 필요치도 않습니다.


C에서는 사용자의 프로그램에서 main()함수를 호출할 수 있습니다. 그러나 C++에서는 허용되지 않죠.


C에서 register변수의 주소를 가질 수 없습니다. C++에서는 이것이 허용됩니다.

그러나 이것은 이식성에 따르는 제약 때문에 이용하고 싶은 특성이라고 할 수 없습니다.











Pointer

* Pointer : 메모리의 주소를 가리키는 변수
   - 32비트 환경에서는 4바이트의 크기를 가짐

* Pointer 규정요소
   - 주소와 타입
   - 주소만 있는 포인터 : void pointer

* Pointer 연산
   - *(dereference operator), &(address of operator)
   - Pointer + integer, Pointer - integer
   - Pointer - Pointer
     (※ Pointer + Pointer 는 없음)

* Pointer 특징
   - Low-Level 프로그래맹을 가능하게 한다.
   - 하지만 잘못 사용하면 매우 위험한 코드가 됨



int nValue = 10;

int *pValue = &nValue;
- pValue에 nValue의 주소값을 할당함

int nValue2 = *pValue;
- nValue2에 *pValue의 값(즉, nValue의 주소)를 할당
   nValue2는 nValue의 주소에 있는 값을 할당받음(즉, 10을 할당)




int arrayValues[4] = { 10, 20, 30, 40 };

int *pValue = arrayValues;
- *pValue에 arrayValues의 시작주소를 할당

int nValue;

nValue = *pValue;     // = arrayValues[0] (즉, 10)
pValue = pValue + 2; // = pValue++; pValue++;
- pValue+2는 int타입 (4바이트)의 주소를 8바이트만큼 이동시켜라.
nValue = *pValue;    // = arrayValues[2]

int nIndex = pValue - arrayValues; // 2
- pValue의 주소값에서 arrayValues의 주소값을 뺀다.
  8이 나오지만 데이터타입(int)의 크기로 나누어주면 2가나옴





Reference


* Reference = Alias & 쉬운 포인터
   - 생성과 동시에 초기화되어야 함
   - Pointer 사용할 때 많이 실수하는 점 극복
     - Address of 연산자 빼먹기
     - 초기화되지 않은 포인터 사용하기

int nValue = 10;

int &rValue = nValue;
- 같은 메모리의 주소에 두개의 이름을 할당

rValue = 11  //then nValue = 11
nValue = 12 //then rValue = 12

printf("%x %x", &nValue, &rValue);
- 같은 값 출력




Pointer vs Reference


void SwapPtr(int *x, int *y)
{
     int temp = *x;
     *x = *y;
     *y = temp;
}

void SwapRef(int &x, int &y)
{
     int temp = x;
     x = y;
     y = temp;
}

int first = 0, second = 1;
SwapPtr(&first, &second); // &를 빼먹으면 crash!
SwapRef(first, second);



Template


* Template이란?
   - 파라미터화된 타입으로 함수나 클래스를 정의
   - Function Template, Class Template
   - 타입에 관계없는 일반적(generic)인 코드 제작


template <class T> void SwapGeneric(T &a, T &b)
{
     T temp = a;
     a = b;
     b = temp;
}

int i = 10, j = 20;
SwapGeneric(i, j);

double di = 1.5, dj = 2.5;
SwapGeneric(1.5, 2.5);



기타 확장들

* Inline function
   - Macro function에 type-safe 가능하게

* 블럭의 중간에 변수정의가 가능함

* 새로운 표준 입출력 방식
   - 스트림 모델 : cout, cin

* Operator overloading
   - 연산자의 의미를 재정의 할 수 잇음

* Exception Handling
   - 에러처리를 간명하게







대충 보라능 ㅡㅡ

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 끝까지 다 본 걸 후회하게 만든 용두사미 드라마는? 운영자 25/07/07 - -
AD 디지털 액세서리 기간한정 세일! 운영자 25/07/11 - -
272097 요즘 취업하기 정말 힘든가보다. 거칠게갤로그로 이동합니다. 11.09.14 72 0
272094 흐규흐규 Adelposs갤로그로 이동합니다. 11.09.14 28 0
272092 요새 하고 있는 것중 일부 [11] [성대아싸]갤로그로 이동합니다. 11.09.14 155 0
272091 사랑은 개뿔 [6] Adelposs갤로그로 이동합니다. 11.09.14 64 0
272090 VCNC 프로그래밍 질문좀 드릴게요 복학생(221.154) 11.09.14 40 0
272089 형들 도스에서 masm 설치할려고하는데 [1] 악력기(220.125) 11.09.14 49 0
272087 기판에 저항달려그러는데... 궁금한게 생겼어요.... [4] 화이트순수갤로그로 이동합니다. 11.09.14 47 0
272086 글 다시 수정해서 올렸어요 [7] H.M.갤로그로 이동합니다. 11.09.14 61 0
272085 근데 아까 그래프짤 crap이 뭘 말하는거야? [2] blackd갤로그로 이동합니다. 11.09.14 464 0
272082 요즘엔 결혼 몇살때 해야 적당함여? [9] SuCo갤로그로 이동합니다. 11.09.14 212 0
272081 아니 쿄스케형은왜 네이트온을안오는거야도대체 [5] Light search갤로그로 이동합니다. 11.09.14 58 0
272080 도우미랑 bar녀 말인데 [2] 메사끼갤로그로 이동합니다. 11.09.14 117 0
272079 오늘 떡밥은 [4] 로하로하알로하갤로그로 이동합니다. 11.09.14 75 0
272078 라이트하게 쓸용도면 비베가 제일아님? [5] ㅂㅈㄷ(210.178) 11.09.14 113 0
272077 아오 C 메모리관리하는거 자세히 나와있는 책 없어? [5] 나리링갤로그로 이동합니다. 11.09.14 106 0
272076 횽들 늅늅이 왔어욤.. 아는척좀 해주세용~ [5] ㅋㄱ(183.96) 11.09.14 63 0
272075 하반기 공채 물건너 갔다.. [18] 막장갤신학생갤로그로 이동합니다. 11.09.14 214 0
272074 형님들. 도움좀 주세요... (고민상담) [3] Re-FEEL갤로그로 이동합니다. 11.09.14 66 0
272073 jsp공부하면서 오라클리눅스 [4] 三didas갤로그로 이동합니다. 11.09.14 87 0
272071 아오 시밤 dvd로 구워 놓는다는걸 깜박해서 vs 다운 받는 중 거칠게갤로그로 이동합니다. 11.09.14 32 0
272069 이력서 경력란에 C, C++ 마스터 라고 썼다. [4] 천재해커(121.190) 11.09.14 212 0
272067 격투게임 좋아하는 횽들보셈 [13] McHello갤로그로 이동합니다. 11.09.14 179 0
272066 잡코리아나 사람인 가보면 개발자 신입은 거의 안뽑는다. [4] 거칠게갤로그로 이동합니다. 11.09.14 181 0
272065 PlayStation2가 정말 후진 머신이긴 한가보다... [2] 분당살람갤로그로 이동합니다. 11.09.14 82 0
272063 형들 C 한달만에 마스터하면 빠른거야? [10] 뉴비냄새(165.194) 11.09.14 166 0
272060 구조체 포인터배열 질문 [9] ㄴㄹㅈㄷㄹㅈ(211.114) 11.09.14 90 0
272058 생성자와 소멸자 [2] 천재해커(121.190) 11.09.14 67 0
272057 행님들 wav -> spectrum 변환하는 공개 알고리즘(Lib) [3] 프로그래머(211.183) 11.09.14 66 0
272055 이런거 자꾸 올리면 안되는뎈ㅋㅋ [3] 이문동쮸쮸바갤로그로 이동합니다. 11.09.14 96 0
272053 행님들, 도와주세여ㅠ [2] 프뢁(124.54) 11.09.14 63 0
272050 갓뎀, 왜 정보가 털리고 보안망이 뚫리는지 훤히 알겠어 [1] 이모군(112.219) 11.09.14 98 0
272049 오늘부터 로하로하알로하갤로그로 이동합니다. 11.09.14 17 0
272047 그래픽 랜더링 기술... 이문동쮸쮸바갤로그로 이동합니다. 11.09.14 60 0
272045 나 10년동안 하루에 10시간씩 컴퓨터했는데 코딩을 못함 [4] ㅇㅇ(61.77) 11.09.14 132 0
272044 오늘따라 프갤이 재미없다.. [2] 이문동쮸쮸바갤로그로 이동합니다. 11.09.14 65 0
272043 횽들 국비지원 언어 선택 관련 조언 부탁드려요.. ㅜㅜ 좀 길어요 [8] 헬푸미(121.136) 11.09.14 268 1
272039 내가 보기엔 쵸쵸도 알바인 듯 분당살람갤로그로 이동합니다. 11.09.14 46 0
272038 OpenGL 질문점 [6] 그딴건없구염&#039;ㅡ&am.갤로그로 이동합니다. 11.09.14 108 0
272037 사실 내가 디시 알바다. [1] 천재해커(121.190) 11.09.14 61 0
272036 웁...웁... [1] 분당살람갤로그로 이동합니다. 11.09.14 63 0
272034 누구 비베로 액티브x 수동설치 배포해본 횽 있어? [2] blackd갤로그로 이동합니다. 11.09.14 83 0
272032 Ashenvale은 사실 나랑 불알 친구다. 천재해커(121.190) 11.09.14 50 0
272031 주석달았는데 좀 추가부탁합니다 츄파츕스(203.255) 11.09.14 28 0
272030 VCNC 아시는분만요 ㅠ [3] 복학생(112.171) 11.09.14 69 0
272029 안철수연구소 저자들이 쓴 Application Hacking 볼만한가? Deanex갤로그로 이동합니다. 11.09.14 58 0
272025 wd 하드 교품 후기 [1] 거칠게갤로그로 이동합니다. 11.09.14 60 0
272022 C++ 을 알기 위해선 C를 알아야 한다. 천재해커(121.190) 11.09.14 86 0
272021 아이맥 27인치 짜리 고치러 왔나봐 ㅋㅋ [4] 거칠게갤로그로 이동합니다. 11.09.14 92 0
272020 중소기업 마저 신입을 안키우면 [1] 거칠게갤로그로 이동합니다. 11.09.14 92 0
272019 정보보안전문가 JAVA 필수임...? (조공짤) 안초심갤로그로 이동합니다. 11.09.14 139 0
뉴스 '전국노래자랑', 7/13(일) 충남 홍성군 편! 신흥 트롯황태자 김용빈 출격! 디시트렌드 07.11
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2