본문 바로가기

정상을향해/Languages8

C++에서의 파일분할 대부분의 프로그램이 하나의 파일에 모든 것을 담진 않는다. 특히 C++과 같은 객체지향 언어는 클래스 별로 헤더파일과 소스파일을 생성해서, 클래스의 선언과 정의를 분리하는 경우가 많기 때문에 많은 수의 파일이 만들어진다. 클래스 Car를 대상으로 파일을 나눈다고 예를 들어보자. Car.h 클래스의 선언을 담는다.Car.cpp 클래스의 정의(멤버함수의 정의)를 담는다. 여기서 말하는 클래스의 선언(declaration)은 멤버변수의 선언과 멤버함수의 원형을 포함한다. 이는 클래스와 관련된 문장의 오류를 잡아내는데 필요한 최소한의 정보로써, 클래스를 구성하는 외형적인 틀을 보여준다. 클래스의 정의(definition)에 해당하는 함수의 정의는 다른 문장의 컴파일에 필요한 정보를 가지고 있지 않다. 따라서 함.. 2013. 11. 10.
참조자(Reference)와 함수 C언어에서는 함수의 두 가지 호출 방식이 존재한다. Call-by-value 값을 인자로 전달하는 함수의 호출방식Call-by-reference 주소 값을 인자로 전달하는 함수의 호출방식 C언어에서 말하는 Call-by-reference는 다음의 의미를 지닌다. "주소 값을 전달받아서, 함수 외부에 선언된 변수에 접근하는 형태의 함수호출" 즉, 주소 값이 외부 변수의 참조도구로 사용되는 함수의 호출을 뜻한다. 다시 말하면 주소 값이 전달되었다는 사실이 중요한 게 아니라, 주소 값이 참조의 도구로 사용되었다는 사실이 중요한 것이며, 이 것이 Call-by-value와 Call-by-reference를 구분하는 기준이 된다. C++에서는 두 가지 방식으로 Call-by-reference의 함수정의가 가능하다.. 2013. 11. 10.
[C] 포인터 : 배열명 배열명은 그 자체가 주소를 의미한다. int temp[3] = {1, 2, 3}; int *temp_p; 위와 같은 정의가 있을 때, for(i = 0; i < 3; i++) printf("%d", *(temp + i)); // 1번식 for(i = 0; i 2011. 4. 16.
[C] 포인터 : *의 의미 int temp = 0; int *temp_p; temp_p = &temp; *temp_p = temp; printf("temp_p = %d, *temp_p = %d", temp_p, *temp_p); 포인터 변수를 정의할 때의 '*'와 수식에서 사용할 때의 '*'는 다른 의미가 있다. 정의할 때 사용하는 '*'는 주소를 저장할 수 있는 변수를 할당 받는 것이고 수식 내에서 사용된 '*'는 변수에 대한 역참조(dereferencing)를 한다는 의미이다. 이는 역참조 연산자(dereferencing operator)라고 따로 부른다. #include int main() { int *temp_p; *temp_p = 1024; // Segmentatiion Fault 발생 printf("%d\n", *tem.. 2011. 4. 16.