ABOUT ME

-

Today
-
Yesterday
-
Total
-

Post Calendar

«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
  • 정보처리기사 실기 스터디[2022-09-28] - 프로그래밍 언어 활용
    자격증/정보처리기사 2022. 9. 28. 19:12

    📌 Study

    🔸 2022-09-28

    [프로그래밍 언어 활용]

    1. 기본 문법 활용하기

    • 포인트 : 변수의 주소값을 저장하는 공간
    • int a = 10;
    • int *b = &a;
    • int *b => 데이터가 들어갈 공간(포인터)
    • &a => 주소값
    • b 공간에 a의 주소값을 저장
    • a 값을 호출하고 싶은 땐, *b

     

    • 포인터 선언
      • 데이터 타입*포인터 변수명 = &변수명;
      • int *b = &a;

     

    • 1차원 배열과 1차원 포인터
      • 1차원 배열에서 배열명과 단독으로 사용할 경우 1차원 포인터와 동일
      • 1차원 배열일 때 배열명[요소] 형태, *(배열명+요소), 1차원 포인터일 때, 포인터[요소] 형태, *(포인터+요소)일 경우 값을 가리킴
      • *(a+1) = a[1]
      • p[0] = a[0]
      • *(p+1) = p[1]
    배열의 주소 배열명 == & 배열명[0]
    배열의 0번지 값 배열명[0] == *배열명

     

    • int a[3] = {1, 2};
    • int *p = a;

     

    • &a[0] == a = a[0] = 1
    • &a[1] == (a+1) = a[1] = 2
    • &a[2] == (a+2) = a[2] = 0

     

    • 1차원 배열과 1차원 포인터 예제
        #include <stdio.h>
        void main() {
            int a[3] = {1, 2};
            int *p = a;
    
            printf("%d %d %d \n", a[0], a[1], a[2]);    // 1, 2, 0
            printf("%d %d %d \n", *a, *(a+1), *(a+2));  // 1, 2, 0
            printf("%d %d %d \n", *p, *(p+1), *(p+2));  // 1, 2, 0
            printf("%d %d %d \n", p[0], p[1], p[2]);    // 1, 2, 0
        }

     

    • 2차원 배열과 1차원 포인터
      • 2차원 배열에서 배열명만 단독으로 사용할 경우 2차원 포인터와 동일
      • 2차원 배열일 때 배열명[요소] 형태, *(배열명+요소)는 1차원 포인터와 동일하고, 1차원 포인터에 해 *과 []을 이용해야 값을 가리킬 수 있음
      • *(a+2) => 1차원 포인터
      • a[2][2], *(a[2]) => 2차원 포인터

     

    • int a[3][2] = {1, 2, 3, 4, 5, 6};
    • int *p = a[1];
    a[0][0] 1
    a[0][1] 2
    a[1][0] 3
    a[1][1] 4
    a[2][0] 5
    a[2][1] 6

     

    • a[0][0] = &a[0][0] == *a[0] = a[0] = 1
    • a[0][1] = &a[0][1] = 2
    • **a = a[0] = 1
    • **(a+1) = a[1] = 3
    • *p = a[1] = 3
    • *(p+1) = 4

     

    • 2차원 배열과 포인터 배열 예제
      #include <stdio.h>
      void main() {
        int a[3][2] = {1, 2, 3, 4, 5, 6};
        int *p[3] = {a[2], a[0], a[1]};
    
        printf("%d %d %d \n", a[0][0], a[1][0], a[2][0]);   // 1, 3, 5
        printf("%d %d %d \n", *a[0], *a[1], *a[2]);   // 1, 3, 5
        printf("%d %d %d \n", p[1][0], p[2][0], p[0][0]);   // 1, 3, 5
        printf("%d %d %d \n", *p[1], *p[2], *p[0]);   // 1, 3, 5

     

    • 2차원 배열과 2차원 포인터
      • 2차원 배열에서 배열명만 단독으로 사용할 경우 2차원 포인터와 동일
      • 2차원 배열일 때 배열명 [요소][요소], 배열명[요소], *(배열명+요소)일 경우 값을 가리킴

     

    • 2차원 배열과 2차원 포인터 예제
      #include <stdio.h>
      void main() {
        int a[3][2] = {1, 2, 3, 4, 5, 6};
        int (*p)[2] = a;
        int (*q)[2] = a+1;
    
        printf("%d %d %d \n", a[0][0], a[0][1], a[1][0]);   // 1, 2, 3
        printf("%d %d %d \n", p[0][0], p[0][1], p[1][0]);   // 1, 2, 3
        printf("%d %d %d \n", q[0][0], q[0][1], q[1][0]);   // 3, 4, 5

     

    • 기출
      #include <stdio.h>
      void main() {
        int arr[3] = {1};
        int s = 0, i = 0;
        arr[1] = *(arr+0)+2;
        arr[2] = *arr+3;
    
        for (i = 0; i < 3; i++)
          s = s + arr[i];
    
        printf("%d", s);    // (4+4) = 8
      }
      #include <stdio.h> 
      void main() {
        int *arr[3];
        int a = 12, b = 24, c = 36;
        arr[0] = &a;
        arr[1] = &b;
        arr[2] = &c;
    
        printf("%d \n", *arr[1] + **arr + 1);   //  24 + 13 = 37
      }

     

    • 1차원 배열과 문자열
      • 문자열을 초기화할 때 마지막에 NULL 문자가 삽입되므로 초기화하는 글자 수보다 1이상 큰 값으로 배열을 선언
      • 초기화 할 때 배열의 크기를 명시하지 않으면 문자열의 문자수 + 1 만큼 자동으로 생성
      • printf 함수에서 %s를 이용하여 문자열을 읽고 출력하는데, printf 파라미터로 문자를 읽기 시작할 시작 주소를 알려주면 시작 주소부터 NULL 직전 값까지 읽어서 출력

     

    • char a[7] = "Hello";
    &a[0] H
    &a[1] e
    &a[2] l
    &a[3] l
    &a[4] o
    &a[5] Null
    &a[6] 0

     

    • 1차원 배열과 문자열 예제
      #include <stdio.h>
      void main() {
        char a[7] = "Hello";
    
      pritnf("%s \n", a);   // Hello
      pritnf("%s \n", a+1);   // ello
    
      a[4] = NULL;
      printf("%s \n", a+1);   // ell
      }

     

    • 2차원 배열과 문자열
      • 문자열을 여러 개 정의할 때 2차원 배열을 사용
      • printf 함수에서 %s를 이용하여 문자열을 읽고 출력하는데, printf 파라미터로 문자를 읽기 시작할 시작 주소를 알려주면 시작 주소부터 NULL 직전 값까지 읽어서 출력

     

    • 2차원 배열과 문자열 예제
      #include <stdio.h>
      void main() {
        char a[2][8] = {"Hello", "Soojebi"};
    
      printf("%s \n", a[0]);    // Hello
      printf("%s \n", a[1]);    // Soojebi
    
      a[0][4] = NULL;
      printf("%s \n", a[0] + 2);    // ll
      printf("%s \n", a[1] + 3);    // jebi
      } 

     

    • 기출
      #include <stdio.h>
      void main() {
        char *p = "KOREA";
    
      printf("%s \n", p);   // KOREA
      printf("%s \n", p+3);   // EA
      printf("%c \n", *p);    // K
      printf("%c \n", *(p+3));    // E
      printf("%c \n", *p+2);    // M

    댓글

Designed by Tistory.