01. 물리주소(MAC Address)를 IP 주소로 변환하는 프로토콜을 작성하시오.
: RARP (Reverse Address Resolution Protocol)
* 인터넷 계층(네트워크 계층) 주소와 링크 계층 주소 사이의 변환을 담당하는 프로토콜
- ARP(Address Resolution Protocol) : IP 주소 → MAC 주소
- RARP(Reverse Address Resolution Protocol) : MAC 주소 → IP 주소
* 프로토콜
OSI 7 참조 모델 | 단위 | 주요 장비 | TCP / IP | |
응용 계층 | 메시지 | 게이트웨이 | 응용 계층 | telnet(23), FTP(20, 21), HTTP(80), POP, SMTP(25) DHCP(67), SNMP(161, 162), DNS(53) |
표현 계층 | ||||
세션 계층 | ||||
전송 계층 | 세그먼트, 데이터그램 | 전송 계층 | TCP, UDP | |
네트워크 계층 | 패킷 | 라우터 | 인터넷 계층 | IP, ARP, RARP, ICMP, IGMP |
데이터링크 계층 | 프레임 | 브리지, 스위치 | 링크 계층 | Ethernet, IEEE 802, X.25, RS-232C |
물리 계층 | 비트 | 허브, 리피터 |
02. 다음은 데이터 모델링에 대한 설명이다. 빈 칸 ①~③에 해당하는 용어를 쓰시오.
데이터 모델링은 정보시스템을 구축하기 위해, 어떤 데이터가 존재하는지 또는 업무가 필요로 하는 정보는 무엇인지를 분석/표현하는 방법을 말한다.
데이터 모델링은 ( ② ) 데이터 모델링, ( ③ ) 데이터 모델링, ( ① ) 데이터 모델링을 통해 데이터 베이스를 구축하는 일련의 절차를 거쳐 진행된다. - ( ① ) 데이터 모델링은 특정 DBMS에 의존하는 데이터 형식, 제약조건, 뷰, 인덱스 등을 설정하는 작업으로 결과물로는 테이블 정의서, 제약조건 리스트, 인덱스 명세서 등이 있다. - ( ② ) 데이터 모델링은 업무의 대상이 되는 실제 데이터에 대해서 서로의 상관관계를 파악하는 작업으로 이를 통한 대표적인 결과물로는 ERD이 있다. - ( ③ ) 데이터 모델링은 DBMS의 유형에 맞추어 DBMS에 저장될 데이터의 골격(스키마)를 만드는 작업으로 이를 통해 함수종 속성 파악, 논리적 스키마(릴레이션 구조) 등의 결과를 얻을 수 있다. |
: ① 물리 , ② 개념 , ③ 논리
* 데이터 모델링의 3단계
- 개념적 모델링 : 업무의 대상이 되는 실제 데이터에 대해서 개체 간의 상관 관계를 정확히 표현하는 단계
- 결과물 : ERD(Entity-Relation Diagram)
- 논리적 모델링 : 개념적 설계로 만들어진 개념적 구조로부터 특정 DBMS의 유형에 맞추어 DBMS에 저장될 데이터의 골격(스키마)을 만드는 단계
- 결과물 : 함수 종속적 파악, 논리적 스키마(릴레이션 구조)
- 물리적 모델링 : 특정 DBMS에 의존하는 데이터 형식, 제약조건, 뷰, 인덱스 등을 설정하는 단계
- 결과물 : 테이블 정의서, 제약조건 리스트, 인덱스 명세서
03. 다음 테이블의 카디널리티와 차수를 구하시오.
학번 | 이름 | 학년 | 학과 |
181101 | KKK | 1 | 컴퓨터공학과 |
171201 | HHH | 2 | 전자공학과 |
171302 | XXX | 3 | 컴퓨터공학과 |
161107 | YYY | 3 | 건축공학과 |
151403 | QQQ | 4 | 전자공학과 |
: 카디널리티 = 5, 차수=4
- 카디널리티(Cardinality) : 릴레이션의 튜플의 갯수
- 차수(Degree) : 릴레이션의 속성의 개수
04. 기업 내부에서 운영되는 각종 플랫폼 및 애플리케이션 간의 정보전달, 연계, 통합을 가능하게 하는 솔루션이다. Point to Point, Hub&Spoke, Message Bus, Hybrid 등의 데이터 연계 방식을 갖는 소프트웨어 및 정보시스템 아키텍처 프레임워크를 무엇이라 하는지 쓰시오.
: EAI (Enterprise Application Intergration)
* EAI(Enterprise Application Intergration, 기업 애플리케이션 통합 )
- 기업 내부에서 운영되는 각종 플랫폼 및 애플리케이션 간의 정보 전달, 연계, 통합을 가능하게 해주는 솔루션이다.
- 각 비즈니스 간 통합 및 연계성을 증대시켜 효율성을 높일 수 있다.
- 각 시스템 간의 확장성을 높여 줄 수 있다.
- 타 시스템에서 필요한 정보를 취득하여 다양한 서비스를 사용자에게 제공할 수 있다.
- 유형 : Point-to-Point, HHub&Spoke, Message Bus, Hybrid
05. 다음 <보기>에 해당하는 데이터 모델 구성 3요소 중 ①, ②에 알맞은 데이터 모델 구성 요소를 쓰시오.
- ( ① ) : 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세로 데이터베이스를 조작하는 도구이다.
- ( ② ) : 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질을 표현한다. - 제약조건 : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건 |
: ① 연산 , ② 구조
* 데이터 모델에서 표현해야 할 3가지 구성요소
- 논리적으로 표현된 데이터 구조
- 구성요소의 연산
- 구성요소의 제약 조건
06. 다음은 블랙박스 테스트의 예시이다. ①, ②에 알맞은 테스트를 작성하시오.
- ( ① ) : 0 <= X <= 10 일 때, -1, 0, 10, 11 인 경우 사용하는 테스트
- ( ② ) : 유효값과 그렇지 않은 범위를 나눠야 할 경우 사용하는 테스트 |
: ① 경계값 분석 , ② 동등분할 테스트
* 블랙박스 테스트
- 동등 분할 기법 : 입력 자료에 초점을 맞춰 테스트 케이스를 만들어 검사하는 방법
- 경계값 분석 : 입력 조건의 경계값을 테스트 케이스로 선정하는 방법
- 원인-효과 그래프 검사 : 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법
- 오류 예측 검사 : 과거의 경험이나 테스터의 감각으로 테스트하는 기법
- 비교 검사 : 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법
07. 괄호 안에 공통적으로 들어갈 공격 기법을 쓰시오.
( )은 시스템 간 연결이 활성화된 상태, 즉 로그인(Login) 된 상태를 가로채는 것을 뜻한다.
( )은 TCP의 고유한 취약점을 이용해 정상적인 접속을 빼앗는 방법이다. 서버와 클라이언트 통신 시 TCP의 시퀀스 넘버를 제어하는 데 발생하는 문제를 공격한다. TCP는 클라이언트와 서버 간 통신을 할 때 패킷의 연속성을 보장하기 위해 각각 시퀀스 넘버를 사용한다. 이 시퀀스 넘버가 잘못되면 이를 바로잡기 위한 작업을 하는데, ( )은 서버와 클라이언트에 각각 잘못된 시퀀스 넘버를 위조해서 연결된 세션에 잠시 혼란을 준 뒤 자신이 끼어들어가는 방식이다. |
: 세션 하이재킹
* 세션 하이재킹 (Session Hijacking)
- 서버와 클라이언트가 TCP 통신을 하고 있을 때, RST 패킷을 보내고 시퀀스 넘버 등을 조작하여 연결을 가로채는 공격 방식이다.
- MITM 공격(중간자 공격) 기법으로 공격자가 두 시스템 간의 로그인된 상태에서 세션을 가로채는 것이다. TCP의 고유한 취약점인 시퀀스 넘버(순서 번호) 제어에 문제가 발생하도록 하여 공격하여 정상적인 접속을 뺴앗는 능동적 공격 기법이다.
- 세션 하이재킹 탐지 방법으로는 TCP 순서번호 비동기화 상태 탐지, ACK STORM 탐지, 패킷의 유실과 재전송 증가 탐지, 예상치 못한 접속의 리셋 탐지가 있다.
* 서비스 공격 유형의 종류
- DDoS(Distributed Denial of Service, 분산 서비스 거부)
- 피싱(Phishing)
- 파밍(Pharming)
- 스니핑(Sniffing)
- 스미싱(Smishing)
- 큐싱(Qshing)
- 랜섬웨어(Ransomware)
- 키 로거(Key Logger)
- SQL 삽입(SQL Injection)
- XSS(Cross Site Scripting)
08. 다음 ①, ②에 알맞은 답안을 작성하시오.
IPv6는 ( ① ) 비트의 길이를 가진다.
IPv4는 길이가 32비트이며, ( ② ) 비트씩 4분할 한다. |
: ① 128 , ② 8
* IPv4 VS IPv6
IPv4 | - 주소를 나타내기 위해 32비트 사용 - 32비트를 8비트 단위로 구분하여 10진수로 표현 - 사용 가능 주소 : 2^32 - ex) 201.10.34.130 |
IPv6 | - 주소를 나타내기 위해 128비트 사용 - 128비트를 16비트 단위로 구분하며 각 부분은 콜론(:)으로 구분하여 16진수로 표현 - 사용 가능 주소 : 2^128 - ex) 2010:0DAC:0000:0000:0000:0000:16C0:75AB |
09. 다음 ①~③에서 설명하는 결합도를 작성하시오.
( ① ) : 모듈 간의 인터페이스로 배열이나 오브젝트, 스트럭처 등이 전달되는 경우의 결합도
( ② ) : 한 모듈이 다른 모듈 내부에 있는 지역 변수나 기능을 참조(참조 또는 수정)하는 경우의 결합도 ( ③ ) : 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우의 결합도 |
: ① 스탬프 결합도 , ② 내용 결합도 , ③ 공통 결합도
* 결합도(Coupling)
- 두 모듈 간의 상호 의존도
- 모듈 간의 결합도를 약하게 하면 모듈 독립성이 향상되어 시스템을 구현하고 유지보수 작업이 쉽다.
- 즉, 결합도가 낮을수록 높은 품질의 모듈이다.
* 결합도 유형
자료 (Data) |
- 모듈 간의 인터페이스가 자료 요소로만 구성된 경우 - 모듈 간의 인터페이스로 값이 전달되는 경우 |
결합도 약함 |
스탬프 (Stamp) |
- 두 모듈이 동일한 자료 구조를 조회하는 경우 - 모듈 간의 인터페이스로 배열이나 오브젝트, 스트럭처 등이 전달되는 경우 |
|
제어 (Control) |
- 어떤 모듈이 다른 모듈의 내부 논리 조작을 제어하기 위한 목적으로 제어신호를 이용하여 통신하는 경우 - 하위 모듈에서 상위 모듈로 제어신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도현상이 발생함 |
|
외부 (External) |
어떤 모듈에서 외부로 선언한 변수(데이터)를 다른 모듈에서 참조할 경우 | |
공통 (Common) |
여러 모듈이 공통 자료 영역을 사용하는 경우 | |
내용 (Content) |
한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 조회하도록 설계되었을 경우 | 결합도 강함 |
10. <보기>에 해당하는 용어를 쓰시오.
( ① ) 요구사항은 제품을 구현하기 위해 소프트웨어가 가져야 할 기능적 속성
( ② ) 요구사항은 제품 품질 기준 등의 만족을 위해 소프트웨어가 가져야 할 특성 |
: ① 기능적 , ② 비기능적
* 요구사항 분석(Requirement Analysis) 기법의 종류
- 기술 내용에 따른 분류 : 기능적 요구사항, 비기능적 요구사항
기능적 요구사항 (Functional Requirements) |
- 제품 구현을 위해 소프트웨어가 가져야 할 기능적 속성 ex) 파일 저장 기능, 편집 기능, 보기 기능 등 / 관리자와 승객이 DB에 접근할 때 어떤 정보를 얻을 수 있는지 결정 차 운행, 탑승객, 예약을 입력하는 방법 결정 / 기차표와 예약 정보에 어떤 정보가 포함되어야 할 지 결정 |
비기능적 요구사항 (Non-Functional Requirements) |
- 제품 품질 기준 등의 만족을 위해 소프트웨어가 가져야 할 특성 - 고객의 새로운 요구사항을 추가하기 위하여 시스템을 확장할 수 있도록 설계 ex) 성능, 사용의 용이성, 신뢰도, 보안성, 안전선 등 |
11. 다음 설명에 해당하는 용어를 쓰시오.
- 접근통제 모델 중 정보의 소유자가 정보의 보안 수준을 결정하고 이에 대한 정보의 접근 통제까지 설정하는 모델이다.
- 주체 또는 소속 그룹의 아이디(ID)에 근거하여 소유자가 자신의 의지대로 데이터에 대한 접근 권한을 지정하고 제어하는 방식이다. - 객체별로 세분된 접근제어가 가능하며 유연한 접근제어 서비스를 제공할 수 있다. - 대부분의 운영체제에서 지원이 되어 다양한 환경에서 폭넓게 사용되고 있다. |
: DAC (임의적 접근 통제; Discretionary Access Control)
* 접근제어 모델(정보의 접근 통제 정책)
- 정보의 접근통제 정책은 시스템의 자원 이용에 대한 불법적인 접근을 방지하는 과정으로 비인가자가 컴퓨터 시스템에 액세스하지 못하도록 하는 것이다.
정책 | MAC(Mandatory Access Control) 강제적 접근 통제 |
DAC(Discretionary Access Control) 임의적 접근 통제 |
RBAC(Role Based Access Control) 역할 기반 접근 통제 |
권한 부여 | 시스템 | 데이터 소유자 | 중앙 관리자 |
접근 결정 | 보안등급(Label) | 신분(Identity) | 역할(Role) |
정책 변경 | 고정적(변경 어려움) | 변경 용이 | 변경 용이 |
장점 | 안정적, 중앙 집중적 | 구현 용이, 유연함 | 관리 용이 |
12. 웹 서비스에서 웹 서비스명, 서비스 제공 위치, 서비스 메시지 포맷, 프로토콜 정보 등에 대한 상세 정보를 기술한 파일이며, XML로 기술된 웹 서비스 기술 언어 또는 기술된 정의 파일의 총칭을 무엇이라 하는지 쓰시오.
: WSDL (Web Services Description Language)
* WSDL(Web Services Description Language)
- 웹 서비스 기술 언어로 웹 서비스가 제공하는 서비스에 대한 정보를 기술하기 위한 XML 기반으 마크업 언어이다.
- 웹 서비스에서는 저장소로 UDDI를 사용하고 저장소에 접근과 그 저장된 자료의 접근 형식을 적은 설명서로 WSDL가 사용되며 이 자료를 사용하기 위해 실행 프로토콜로 SOAP이 사용된다.
- 웹 서비스명, 제공 위치, 메시지 포맷, 프로토콜 정보 등 웹 서비스에 대한 상세 정보를 기술한 파일이다.
- 독집적이며 단순한 XML 형식으로 구현한다.
- UDDI의 기초가 된다.
- 인터넷 웹 서비스를 제공하기 위해 SOAP, XML 스키마와 결합하여 사용한다.
13. <보기>에 해당하는 용어를 쓰시오.
- ( ① ) : '모듈 테스트'라고도 하며, 작은 소프트웨어 단위(컴포넌트 또는 모듈)을 개별 테스트하는 것으로써, 일반적으로 개발자 자신에 의해 행해진다. 과거에는 시간 부족을 이유로 생략되었으나 최근에는 개발 도구의 발전으로 개발 과정 중에 자동으로 진행된다. 아주 중요한 부분이므로 개발 도구에서 지원하지 않아도 반드시 수행해야 한다.
- ( ② ) : 컴포넌트 간 인터페이스 테스트를 하고 운영체제, 파일 시스템, 하드웨어 또는 시스템 간 인터페이스와 같은 각각 다른 부분과 상호 연동이 정상적으로 작동하는지 여부를 테스트한다. |
: ① 단위 테스트 , ② 통합 테스트
* 프로젝트 수행 단계에 따른 테스트의 분류
단위 테스트 | - 작은 소프으퉤어 단위(컴포넌트 또는 모듈)를 테스트 - 일반적으로 개발자 자신에 의해 수행 - 과거에는 시간 부족을 이유로 단위 테스트가 생략되었으나 최근에는 개발 도구의 발전으로 개발 과정 중에 자동으로 진행 - 단위 테스트는 아주 중요한 부분이므로 개발 도구에서 지원하지 않아도 반드시 수행 |
통합 테스트 | - 모듈 사이의 인터페이스, 통합된 컴포넌트 간의 상호 작용을 테스트 - 하나의 프로세스가 완성된 경우 부분적으로 통합 테스트를 수행하는 경우도 있음 |
시스템 테스트 | - 통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지를 테스트 - 성능 및 장애 테스트가 여기에 포함됨 |
인수 테스트 | - 일반적으로 최종 사용자와 업무에 따른 이해관계자 등이 테스트를 수행 - 개발된 제품에 대해 운영 여부를 결정하는 테스트로, 실제 업무 적용 전에 수행 |
14. 다음 빈칸 ( ) 안에 공통으로 들어갈 가장 적합한 용어를 쓰시오.
- ( )는 시스템의 성능 향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법을 의미한다.
- ( )란 DB의 성능 향상을 목적으로 정규화를 통해 분할된 테이블을 다시 합치는 과정을 의미한다. - ( )는 중복성의 원리를 활용하여 데이터 조회 시 성능을 향상시키는 역할을 할 수 있다. |
: 반정규화 (역정규화, 비정규화)
* 비정규화 (De-normailzation)
- 비정규화는 정규화된 엔티티, 속성, 관계에 대해 시스템의 성능 향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법을 의미한다.
- 둘 이상의 릴레이션들에 대하여 조인한 결과를 빈번하게 이용하는 경우, 비정규화함으로써 질의응답 시간이 단축될 수 있다.
15. '프로세스 간 통신'이라고도 하며, 세마포어, 소켓 등 프로세스 간 메시지 전달이나 공유 메모리 기법을 통해 자원이나 데이터를 서로 주고받는 행위 또는 그에 대한 방법이나 경로를 의미하는 용어를 쓰시오.
: IPC (Inter-Process Communication)
* 프로세스 간 통신(IPC)
- 정의 : 여러 프로세스 간의 자원이나 데이터를 주고받는 통신 방법
- 필요성 : 정보 공유, 실행 속도 향상, 모듈성, 편리성
- 기법 : 메시지 전달, 공유 메모리
16. 다음 SQL 문의 실행 결과를 쓰시오.
SELECT COUNT(*) FROM EMP WHERE EMPNO > 100 AND SAL >= 3000 OR EMPNO = 200 |
EMPNO | ENAME | AGE | SAL | DEPT_ID |
100 | 홍길동 | 25 | 1000 | 20 |
200 | 강감찬 | 40 | 3000 | 30 |
300 | 이순신 | 42 | 1500 | 40 |
400 | 강희영 | 25 | 2500 | 40 |
1
- 주어진 SQL문을 실행 후, 결과를 작성하는 문제이다. 결과는 <EMP> 테이블에 조건식에 해당하는 튜플 수(레코드 수)를 출력한다. 채점 시 튜플의 개수만 작성하여도 되고 표를 그려 작성하여도 정답으로 인정된다.
- WHERE 절의 조건의 경우 조건식이 3가지이며, 이들 조건식 사이를 AND와 OR를 통해 판단하는 것이 문제의 핵심이다.
- 논리 연산의 우선순위 : NOT(논리부정) → AND(논리곱) → OR(논리합)
- 논리 연산의 경우 AND가 OR보다 우선순위가 높으므로, 'EMPNO > 100 AND SAL >= 3000' 조건에 해당하는 EMPNO가 100을 초과하면서 SAL이 3000 이상인 튜플을 추출하고, 'EMPNO=200' 조건인 EMPNO가 200에 해당하는 튜플을 OR을 수행하면 다음과 같은 튜플이 결과로 추출된다.
- SELECT절에서는 COUNT(*) 집계함수를 통해 튜플의 개수를 최종 출력하고자 하였으므로, 결과는 1이 출력된다.
[WHERE절 조건 수행 결과]
EMPNO | ENAME | AGE | SAL | DEPT_ID |
200 | 강감찬 | 45 | 3000 | 30 |
[최종 집계함수 적용 결과]
COUNT(*) |
1 |
17. 다음 파이썬 프로그램의 실행결과를 쓰시오.
class arr :
a = ["Seoul", "Kyeonggi", "Incheon", "Deajeon", "Deagu", "Pusan"]
str = ''
for i in arr.a:
str = str + i[0]
print(str)
SKIDDP
- Python의 클래스 Arr 클래스 변수인 a리스트 객체는 6개의 문자열 상수를 요소로 갖도록 선언되어 있다.
- arr.a의 모든 문자열 요소에 대해 첫 번째(인덱스 0) 위치의 문자를 인덱싱을 통해 추출한 후, 문자열 객체 str01에 누적한 결과를 출력하는 프로그램이다.
18. 다음 JAVA 프로그램의 실행결과를 쓰시오.
int i, sum;
for (i=0; i<=5; i++) {
sum += i;
System.out.print(i);
if (i == 5){
System.out.print("=");
System.out.print(sum);
}
else {
System.out.print("+");
}
}
0+1+2+3+4+5=15
- 해당 프로그램은 0부터 5까지의 정수 항을 반복 출력한 후 최종 누적 결과를 출력하는 프로그램이다.
- 반복하여 출력하는 대상은 0부터 4까지의 정수 항의 출력 후 '+' 문자를 출력하고 5인 정수 항의 출력 후에는 '=' 문자를 출력한다.
- 이를 위해 반복문에서 항의 값이 변수 i가 5인지를 if~else 명령문을 통해 구별하여 '+' 문자와 '=' 문자를 출력한다.
19. 다음 JAVA 프로그램의 실행결과를 쓰시오.
int val[][] = {{45, 50, 75}, {89}};
System.out.println(val[0].length);
System.out.println(val[1].length);
System.out.println(val[0][0]);
System.out.println(val[0][1]);
System.out.println(val[1][0]);
3
1
45
50
89
- 해당 프로그램은 Java의 2차원 배열 객체의 각 행의 길이(요소의 개수)와 배열의 요소(값)을 출력하는 프로그램이다.
- Java에서는 배열 객체의 length 속성을 사용하여 배열의 길이를 얻을 수 있다.
- 주어진 2차원 배열 객체의 각각의 0행과 1행의 배열의 길이는 열을 구성하는 요소의 개수이다. 따라서 a[0].length는 0행의 요소의 개수인 3, a[1].length는 1행의 요소의 개수인 1을 각각 출력한다.
20. 다음 C 프로그램의 실행결과를 쓰시오.
int main(){
struct insa {
char name[10];
int age;
}
a[] = {{"Kim", 28, "Lee", 38, "Park", 41, "Choi", 30 };
struct insa *p;
p = a;
p++;
print("%s\n", p → name);
print("%d\n", p → age);
}
Lee
38
- 구조체 배열은 포인터 변수를 통해 참조하여 구조체 멤버를 출력하는 C언어 프로그램이다. C언어의 구조체는 '구조체 정의 → 구조체 변수 선언 → 구조체 변수를 통한 멤버 참조'의 순으로 사용된다.
- 해당 프로그램은 구조체 배열을 선언 후, 구조체 포인터 변수를 통해 각 멤버에 '→' 연산자를 통해 접근하였다.
- 구조체 insa는 문자열 멤버 name과 정수형 멤버 age로 정의되어 있다. 구조체 배열변수 a가 1차원 배열로 초기화되어 선언되었다.
p = a; // 배열의 첫 요소를 포인팅, p = &a[0];과 동일, 배열의 이름은 배열의 첫 요소의 주소
- 위 문장을 통해 구조체 배열 a가 구조체 포인터 변수 p에 포인팅되었다.
p++; // p = p + 1; 포인터의 정수 덧셈연산, 다음 요소로 이동
- 포인터의 정수 덧셈은 포인터의 자료형 단위로 연속된 메모리 영역의 주소(위치)를 계산한다.
- 즉, '포인터의 기준위치(base) + sizeof(포인터 자료형) * 정수'로 계산한 주소를 얻을 수 있다.
- 구조체 포인터 변수 p의 증가연산으로 첫 요소를 포인팅한 상태에서 다음 요소를 포인팅하게 되었다.
- 구조체 변수를 통한 멤버 접근 시에는 '.' 연산자를 사용하지만, 구조체 포인터 변수를 통해 멤버 접근 시에는 '→' 연산자를 통해 멤버에 접근한다.
- p→name을 통해 "Lee"값을 참고하며 p→age를 통해 38을 참조하여 출력한다.
해설은 유투브 흥달쌤 강의와, 이기적 실기 기본서를 참고하였습니다 :)
https://youtu.be/rnhOsZIgt0g?si=osHLaIirrDuVTqgs
https://youtu.be/wG8phUn3zjc?si=SLc-gXdM4Bm8HIhi
728x90
반응형
'정보처리기사' 카테고리의 다른 글
[정보처리기사 실기 기출] 2021년 3회 (3) | 2024.10.11 |
---|---|
[정보처리기사 실기 기출] 2021년 2회 (10) | 2024.10.08 |
[정보처리기사 실기 기출] 2020년 4회 (11) | 2024.10.07 |
[정보처리기사 실기 기출] 2020년 3회 (7) | 2024.09.28 |
[정보처리기사 실기 기출] 2020년 2회 (17) | 2024.09.27 |