프로그래밍언어구조의 이해 연습문제
- 최초 등록일
- 2021.07.15
- 최종 저작일
- 2020.12
- 10페이지/
MS 워드
- 가격 3,000원
![할인쿠폰받기](/images/v4/document/ico_det_coupon.gif)
소개글
"프로그래밍언어구조의 이해 연습문제"에 대한 내용입니다.
목차
1. 2차시 2강에 제시된 [문법 2-8]을 사용하여 다음 각각에 대한 파스 트리를 작성하세요.
2. 다음 각각에 대한 EBNF를 작성하세요.
3. C와 C++은 선언과 정의를 구별한다. 차이점은 무엇인가?각각의 예를 제시하시오.
4. 다음과 같은 가상언어로 된 프로그램에 대해 정적 영역 규칙을 적용할 때와 동적 영역 규칙을 적용할 때의 출력 결과는 무엇인가요?
5. 정수 타입의 영역 두 개를 동적으로 할당해서 각각 20과 30을 저장합니다.그리고 이 두개의 값을 교환하는 C 프로그램을 작성하시오.
6. 이름 상수를 사용할 때 얻어지는 장점에 대해서 설명하시오.
7. 사용하고 있는 C컴파일러에서 short, int, long, float, double 타입의 크기가 어떻게 되는지 확인하시오.
8. 열거타입을 사용할 때 장점을 얻을 수 있는 프로그램을 작성하시오.
9. 형식 매개변수가 포인터 타입보다 참조타입인 경우에 얻어지는 장점에 대해 예를 통해 설명하시오.
본문내용
3. C와 C++은 선언과 정의를 구별한다. 차이점은 무엇인가?
각각의 예를 제시하시오.
프로그래밍에서 선언(declaration)과 정의(definition)는 명백히 다른 역할을 하지만 혼동하여 사용하기 쉽다. 선언과 정의의 가장 큰 차이는 ‘메모리를 할당’하는 지 여부이다.
메모리를 할당하지 않고, 대상의 이름만 알려준다면 ‘선언’이고 대상의 메모리가 할당된다면 그것은 ‘정의’다.
위의 예는 선언이기도 하며, 정의기도 한 경우이다. 이처럼 변수는 선언과 동시에 정의되는 경우가 많으며 '변수를 선언한다', '변수를 정의한다' 와 같이 크게 선언과 정의를 구분지어 얘기하지 않는다. 혼동하기 쉬운 예로 typedef는 사용자 정의 타입이라고 불리지만 실제로 메모리 영역상에 올리지는 않기 때문에 정의라고 볼 수 없다.
그렇다면, 선언과 정의는 무엇이며 각자의 특징은 무엇인지에 대해 좀 더 자세히 알아보겠다
1) 선언
컴파일러가 참조할 식별자(identifier)와 이름을 알린다. 여기서 식별자란 변수의 타입과 함수의 인수목록을 뜻하며 이름은 변수, 함수, 클래스의 이름, 네임스페이스를 뜻한다.
선언은 메모리 영역 상에 올리지 않기 때문에 중복되어도 문제가 되지 않으며 두 번 이상 할 수 있다.
다음은 변수와 함수의 선언이다.
2) 정의
정의는 식별자와 이름으로부터 코드를 생성하여, 함수가 호출되거나 변수를 사용할 때 생성된 코드를 참조한다. 또한, 정의는 고유 사양으로 프로그램에는 정의가 하나만 있어야 한다. 같은 식별자와 이름의 정의가 두개 이상이라면 컴파일 에러가 발생한다.
반면, 선언만 하고 정의를 하지 않은 경우 링커 단계에서 참조할 코드가 없기 때문에 링커 에러가 발생하는데 예외 사항으로 아래의 경우 정의가 필요없다.
- 함수가 선언만 있고 정의가 없지만 함수를 호출하거나 함수의 주소를 참조하는 일이 없음
- 정의를 알 필요가 없는 방식으로만 사용됨 (대표적으로 전방 선언)
참고 자료
없음