코딩 37일차 C/C++

마스터피스·2023년 11월 13일
0

C/ C++ 

목록 보기
8/35
post-thumbnail

포인터 1 - 기초

1) 포인터

  • 1 이름 : 프로그래머가 필요로 하는 이름

2 주소 : 컴퓨터가 필요로 하는 이름

3 값 : 변수의 실제 값

  • 우리는 이 변수의 3요소 중 이름과 값만을 활용하여 프로그래밍을 했습니다. C / C++ 은 여기서 컴퓨터가 필요로 하는 이름을 조작할 수 있는데, 이 주소를 담는 변수를 포인터라고 합니다.

2) 포인터 데이터 타입

  • 모든 기본형 데이터 타입 포함 사용자 정의 데이터 타입 (구조체) 등은 각각 데이터 타입에 대한 포인터 데이터 타입이 있습니다. 이는 기본형 데이터 타입 오른쪽에 애스터리스크(별표, *) 문자를 입력하여 이것이 포인터 데이터 타입인가를 지정해줄 수 있습니다.

3) 컴퓨터에게 유효한 변수명인 주소값을 가져오는 방법

  • 주소값은 각각 변수의 이름 앞에 앰퍼샌드 (&) 기호를 붙이게 되면 주소값이 나타나게 됩니다.이렇게 나온 주소값을 포인터 타입 변수에게 할당해주면 그것이 바로 포인터가 됩니다. 이렇게 만들어진 포인터 변수를 이용해, 즉 주소를 이용해 실제 값을 조작할 수 있는데, 이 주소를 따라가는 방법은 포인터 변수의 앞에 애스터리스크( * ) 별표를 붙여서 실제로 조작할 수 있습니다.

연습문제)

sol)

과제형 문제)

sol)
헤더파일)

#define _CRT_SECURE_NO_WARNINGS

#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>


int getint();
int getchar();

cpp 파일)

#include "Header.h"


int main(){

    int v1;
    int v2;
    int result;
    char math;

    int* po1 = &v1;
    int* po2 = &v2;
    int* presult = &result;
    char* mt = &math;


    *po1 = getint();
    *po2 = getint();
    *mt = getchar();



    if (*mt == '+' ) {
        *presult = *po1 + *po2;
        printf("%d + %d = %d 입니다.", v1, v2, result);
    }
    else if (*mt == '-') {
        *presult = *po1 - *po2;
        printf("%d - %d = %d 입니다.", v1, v2, result);
    }
    else if (*mt == '*') {
        *presult = *po1 * *po2;
        printf("%d * %d = %d 입니다.", v1, v2, result);
    }
    else if (*mt == '/') {
        *presult = *po1 / *po2;
        printf("%d / %d = %d 입니다.", v1, v2, result);
    }
    else if (*mt == '%') {
        *presult = *po1 % *po2;
        printf("%d % %d = %d 입니다.", v1, v2, result);
    }
    else {
        printf("잘못 입력하셨습니다");
    }





    return 0;

}

int getint() {

    int input;
    printf("값을 입력하세요. :");
    fseek(stdin, 0, SEEK_END);
    scanf("%d", &input);


    return input;
}

int getchar() {

    int input;
    printf("연산자를 입력하세요. :");
    fseek(stdin, 0, SEEK_END);
    scanf("%c", &input);

    return input;

}
profile
코딩 일지

0개의 댓글