[ICON] C언어 멘토링 - 12차시 수업 : 포인터

hhhhyelim·2022년 9월 13일
0

ICON

목록 보기
13/17
post-thumbnail

📆 일시

: 2022/09/13

📝 수업 내용

  • 포인터의 기본
    - 포인터의 개념
    - 포인터의 선언 및 초기화
    - 포인터의 사용
    - 포인터의 용도
    - 포인터 사용 시 주의 사항
    - const 포인터
  • 배열과 포인터
    - 포인터와 연산
    - 배열처럼 사용되는 포인터
    - 포인터처럼 사용되는 배열
    - 배열과 포인터의 비교
  • 함수와 포인터
    - 함수의 인자 전달 방법
    - 값에 의한 호출
    - 참조에 의한 호출
    - 배열의 전달

💻 실습 내용

  • 포인터 변수를 이용하여 두 수를 바꾸는 프로그램

  • 포인터 변수를 이용하여 세 수를 바꾸는 프로그램

  • 크기가 3인 double형 배열의 모든 원소의 주소를 출력하는 프로그램


📚 과제(6문제)

  1. 배열 원소를 가리키는 포인터를 이용하여 정수형 배열의 모든 원소를 츨력하고, 배열 원소의 합을 구하여 출력하는 프로그램을 완성하시오.

👉참고

- 다른 변수는 추가하지 않는다.
- printData() 함수 완성하기
- totalData() 함수 완성하기

👉실행 예시

배열 원소 출력: 1 2 3 4 5 6 7 8 9 10
배열 원소의 합 = 10

👉힌트

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

void printData();
int totalData();

int main(void)
{
  int data[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

  printf("배열 원소 출력: ");
  printData(data);
  printf("배열 원소의 합 = %d\n", totalData(data));
}

// printData 함수는 data[0]..data[9]의 값을 출력한다.
void printData(int* pi)
{
  // 여기 코드를 완성하시오.
}

// totalData 함수는 data[0]에서 data[9]까지의 값을 모두 더해 그 결과를 반환한다.
int totalData(int* pi)
{
  int sum = 0;

  //여기 코드를 완성하시오
}
  1. 직사각형의 넓이와 둘레를 구하는 함수를 작성하시오. 이 함수를 이용하여 직사각형의 가로, 세로의 길이를 입력받아 넓이와 둘레를 구하여 출력하는 프로그램을 작성하시오.

👉참고

- 함수 원형: get_rect_info(w, h, &area, &circumference);

👉실행 예시

가로 길이? 10
세로 길이? 20
넓이: 200, 둘레: 60
  1. 배열 원소를 가리키는 포인터를 이용하여 정수형 배열의 원소에 입력받은 정수를 더한 다음 출력하는 프로그램을 작성하시오. (배열의 크기는 10)

👉참고

- 출력 함수 원형: void print_array(int* p, int size);
- 덧셈 함수 원형: void add_array(int* p, int size, int n);

👉실행 예시

원본 데이터: 10 20 30 40 50 60 70 80 90 100

더할 숫자 입력: 5

결과: 15 25 35 45 55 65 75 85 95 105
  1. 정수형 배열에 대하여 배열의 원소 중 최대값과 최소값을 구하는 get_min_max 함수를 정의하시오. 이 함수를 이용하여 배열의 최대값과 최소값을 출력한 프로그램을 작성하시오. (배열의 크기는 10)

👉참고

- 출력 함수 원형: void print_array(int* p, int size);
- 최대 최소 함수 원형: void get_min_max(const int* arr, int size, int* min, int* max);

👉실행 예시

배열: 55 12 45 98 23 35 28 67 52 40
최대값: 98
최소값: 12
  1. 크기가 같은 2개의 정수형 배열을 매개변수로 전달받아 두 배열의 원소들의 값을 맞바꾸는 함수를 작성하시오. 이 함수를 이용해서 크기가 5인 두 배열의 값을 맞바꾸는 프로그램을 작성하시오.

👉참고

- 출력 함수 원형: void print_array(int* p, int size);
- 교환 함수 원형: void swap_array(int* x, int* y, int size);

👉실행 예시

a 배열: 1 2 3 4 5
b 배열: 6 7 8 9 10
<< swap_array 호출 후 >>
a 배열: 6 7 8 9 10
b 배열: 1 2 3 4 5
  1. 정수형 배열과 키 값을 매개변수로 전달받아 키 값과 같은 원소를 모두 찾은 다음, 찾은 원소의 인덱스를 배열에 저장해서 리턴하는 함수를 작성하시오.

👉참고

- 이 함수는 찾는 원소의 개수를 리턴한다. 
  예를 들어 배열에서 키 값을 2개 찾았으면 2를 리턴하고 찾은 원소의 인덱스는 배열에 저장한다. 
  키 값을 찾을 수 없으면 0을 리턴한다.
- 출력 함수 원형: void print_array(const int arr[], int size);
- 찾기 함수 원형: int find_array(const int arr[], int size, int key, int found[]);

👉실행 예시

11 22 33 88 22 22 33 44 55 77
찾을 값? 22
찾은 항목은 모두 3개입니다.
찾은 항목의 인덱스: 1 4 5

0개의 댓글