1-1 구조체 정의 및 사용

문제설명

구조체를 정의하고 변수 선언 및 초기화를 통해 기본 사용법을 연습하는 문제이다.

 

목표

  • 구조체 정의
  • 구조체 변수 선언 및 초기화
  • 멤버 접근

요구사항

  • struct point를 정의하시오 (멤버: xpos, ypos)
  • 변수 p1을 선언하고 {10, 20}으로 초기화하시오
  • xpos와 ypos를 출력하시오
 

출력예시

10 20
 

 

 

예상 코드

더보기
#include <stdio.h>

struct point {
    int xpos;
    int ypos;
};

int main(void) {
    struct point p1 = {10, 20};
    printf("%d %d\n", p1.xpos, p1.ypos);
    return 0;
}
 

 

1-2 구조체 배열

문제설명

구조체 배열을 사용하여 여러 개의 구조체 데이터를 다루는 문제이다.

 

목표

  • 구조체 배열 이해
  • 배열 요소 접근

요구사항

  • struct point를 정의하시오. (멤버: xpos, ypos)
  • 구조체 배열 arr[2]를 선언하고
    • (1,2), (3,4)로 초기화
  • 배열의 모든 요소를 출력하시오

출력예시

1 2
3 4
 

 

예상 답안

더보기
#include <stdio.h>

struct point {
    int xpos;
    int ypos;
};

int main(void) {
    struct point arr[2] = {{1,2}, {3,4}};

    for(int i=0; i<2; i++) {
        printf("%d %d\n", arr[i].xpos, arr[i].ypos);
    }

    return 0;
}
 

 

1-3 구조체 포인터와 -> 연산자

문제설명

구조체 포인터를 사용하여 멤버에 접근하는 방법을 연습하는 문제이다.

 

목표

  • 구조체 포인터 이해
  • (*p). vs -> 차이 이해

요구사항

  • struct point를 정의하시오. (멤버: xpos, ypos)
  • struct point p1 = {5, 6} 선언 하시오.
  • 포인터 p가 p1을 가리키도록 설정
  • 아래 두 방식으로 값을 출력하시오
    • (*p).xpos
    • p->xpos

 

출력예시

5 6
5 6
 

 

 

예상 답안

더보기
#include <stdio.h>

struct point {
    int xpos;
    int ypos;
};

int main(void) {
    struct point p1 = {5, 6};
    struct point *p = &p1;

    printf("%d %d\n", (*p).xpos, (*p).ypos);
    printf("%d %d\n", p->xpos, p->ypos);

    return 0;
}
 

1-4 구조체 내부 포인터

문제설명

구조체 멤버로 포인터를 사용하는 구조를 이해하는 문제이다.

 

목표

  • 구조체 안에 포인터 포함
  • 포인터를 통한 접근

요구사항

struct point {
    int xpos;
    int ypos;
};

struct circle {
    double radius;
    struct point *center;
};
 
  • point 변수 (3,4) 생성
  • circle 변수 생성
  • 중심 좌표 출력
 

출력예시

3 4
 

 

 

예상 답안

 
#include <stdio.h>

struct point {
    int xpos;
    int ypos;
};

struct circle {
    double radius;
    struct point *center;
};

int main(void) {
    struct point p = {3,4};
    struct circle c = {5.0, &p};

    printf("%d %d\n", c.center->xpos, c.center->ypos);

    return 0;
}
 

 

1-5 구조체 주소 개념

문제설명

구조체의 메모리 구조를 이해하는 문제이다.

 

목표

  • 구조체 주소 이해
  • 첫 번째 멤버 주소 관계 이해

요구사항

다음 코드를 작성하고 실행 결과를 관찰하시오.

struct point p = {10, 20};

printf("%p\n", &p);
printf("%p\n", &p.xpos);
 

질문) 두 값이 같은지 확인하고 이유를 설명하시오.

 

예상 답안 (설명)

더보기

두 주소는 동일하다

이유: 구조체의 시작 주소 = 첫 번째 멤버의 주소

 

1-6 typedef

문제설명

typedef를 사용하여 구조체를 간단하게 사용하는 문제이다.

 

목표

  • typedef 이해
  • struct 생략

요구사항

  • 구조체 point를 정의하고 Point로 typedef
  • 변수 선언 후 출력
 

출력예시

10 20
 

 

 

예상 답안

더보기
#include <stdio.h>

typedef struct {
    int xpos;
    int ypos;
} Point;

int main(void) {
    Point p = {10, 20};
    printf("%d %d\n", p.xpos, p.ypos);
    return 0;
}
 
 

+ Recent posts