[C] 포인터

Binsu·2021년 9월 8일
0

C

목록 보기
2/3

핵심

  • 포인터(pointer) : 주소 값을 담고 있는 변수(또는 상수)

  • 하나의 주소 값은 1Byte 크기의 메모리 공간을 표현함

  • 32bit 시스템에서는 주소 값을 표현하는데 32bit를 사용함
    (사용할 수 있는 최대 메모리 공간 : 2^32bit = 4GB)

  • 64bit 시스템 : 2^64bit(18446744073709551616bit == 2305843TB)

  • & 연산자는 피연산자의 주소 값을 반환하는 기능의 연산자

&연산자 테스트

#include <stdio.h>

int main(void)
{
    int num_a = 3;
    int num_b = 'A';
    double num_c = 3.141592;
    
    printf("num_a stored location : %#x \n", &num_a);
    printf("num_b stored location : %#x \n", &num_b);
    printf("num_c stored location : %#x \n\n", &num_c);
// %#x는 16진수임을 표시함과 동시에 가독성을 위해 %x 대신 사용

    printf("num_a address value size : %d \n", sizeof(&num_a));
    printf("num_b address value size : %d \n", sizeof(&num_b));
    printf("num_c address value size : %d \n\n", sizeof(&num_c));
    return 0;
}

만약 32bit 시스템에서 실행했다면, address value size는 4(Byte)가 출력됐을 것이다.

포인터?

주소 값을 저장하기 위한 목적으로 사용하며, 변수의 주소 값을 저장하기 위해 선언되는 변수를 포인터 변수라 한다.
포인터는 상수이거나 변수이거나 항상 4Byte(32bit System) or 8Byte(64bit System)의 크기를 가진다.
포인터 변수에는 &연산자를 통해 변수의 첫 번째 주소 값을 저장한다.

주소 값을 int형 변수에 저장하지 않는 이유

추가 예정

0개의 댓글