핀수로그
  • 포인터
    2022년 04월 17일 22시 13분 21초에 업로드 된 글입니다.
    작성자: 핀수
    728x90
    반응형
     

    포인터

     

    코딩교육 티씨피스쿨

    4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

    tcpschool.com

     

    주소값

    데이터의 주소값이란 해당 데이터가 저장된 메모리의 시작 주소를 의미

     

    int 형 데이터는 4바이트의 크기를 가지지만,

    int 형 데이터의 주소값은 시작 주소 1바이트만을 가리킴

     

     

    포인터

     

    메모리의 주소값을 저장하는 변수, 포인터 변수라고도 불림
    int n = 100; // 변수의 선언
    int *ptr = &n; // 포인터의 선언

     

    포인터 연산자

    주소 연산자 (&) (= 번지 연산자)

    변수의 이름 앞에 사용하여 해당 변수의 주소값을 반환

     

    참조 연산자 (*)

    포인터의 이름이나 주소 앞에 사용, 포인터가 가리키는 주소에 저장된 값을 반환

     

    문법

    타입* 포인터이름 = &변수이름;
    또는
    타입* 포인터이름 = 주소값;

    - 타입 : 포인터가 가리키고자 하는 변수의 타입

    - 포인터 이름 : 포인터가 선언된 후에 포인터에 접근하기 위해 사용됨

     

    포인터를 선언한 후 참조 연산자 (*) 를 사용하기 전에 포인터는 반드시 먼저 초기화 되어야 한다.

    그렇지 않으면 의도하지 않은 메모리의 값을 변경하기 때문

    => 초기화하지 않은 포인터에 참조 연산자를 사용하면 오류를 발생시킴

    => 포인터의 선언과 동시에 초기화를 함께하는 것이 좋다

     

    포인터의 참조

    포인터의 주소값과 함께 포인터가 가리키고 있는 주소값의 데이터를 참조하는 예제

    int x = 7; // 변수의 선언
    int *ptr = &x; // 포인터의 선언
    int *pptr = &ptr; // 포인터의 참조

    변수 x의 주소값 포인터 선언

    포인터 *ptr 가 가리키고 있는 주소값의 데이터를 *pptr 가 참조함

     

     

    int x = 1234;
    double y = 3.14;
    int* ptr_x = &x;
    double* ptr_y = &y;
    
    printf("포인터의 크기는 %d입니다.\n", sizeof(ptr_num01));
    printf("포인터 ptr_num01이 가리키고 있는 주소값은 %#x입니다.\n", ptr_num01);
    printf("포인터 ptr_num02가 가리키고 있는 주소값은 %#x입니다.\n", ptr_num02);
    printf("포인터 ptr_num01이 가리키고 있는 주소에 저장된 값은 %d입니다.\n", *ptr_num01);
    printf("포인터 ptr_num02가 가리키고 있는 주소에 저장된 값은 %f입니다.\n", *ptr_num02);
    
    // 실행결과
    // 포인터의 크기는 8입니다.
    // 포인터 ptr_num01이 가리키고 있는 주소값은 0x7c255e4입니다.
    // 포인터 ptr_num02가 가리키고 있는 주소값은 0x7c255e8입니다.
    // 포인터 ptr_num01이 가리키고 있는 주소에 저장된 값은 1234입니다.
    // 포인터 ptr_num02가 가리키고 있는 주소에 저장된 값은 3.140000입니다.

     

    예제

    해당 코드의 출력 결과는?

    #include <stdio.h>
    void main(){
    	char b[16] = "hello world";
    	printf("%s", &b[6]);
    }
    

    - 문자열의 끝에는 문자열의 끝을 알리는 ‘\0’이 들어간다.

    - C언어의 printf 함수에서 포맷 스트링 %s 를 통해 문자열을 출력할 경우

    - 무조건 NULL 값인 ‘\0’ 바로 앞까지 출력한다.

     

    더보기

    답 : world

     

    728x90
    반응형

    '배경지식 > 배경지식' 카테고리의 다른 글

    Class | Object | Instance | IoC | DI  (2) 2022.07.02
    SQL문 완전 정복  (0) 2022.04.17
    환경변수  (0) 2021.11.07
    IO  (0) 2021.11.05
    다다익램  (0) 2021.11.05
    댓글