코딩테스트 문법 C++ 7

마스터피스·2024년 2월 1일
post-thumbnail

포인터

#include <iostream>

using namespace std;

int main()
{
    int a = 123;

    // address of 주소 연산자 & ampersand
    cout << a << " " << &a << endl;

    // 참고: 파이썬 id()와 비교

    int* b = &a; // b에 a의 주소 대입

    // deference operator (역참조 연산자)
    cout << *b << endl;

    *b = 567;

    cout << a << " " << b << " " << *b << endl;

    // 포인터 자체의 주소 크기와 자료형의 크기 (주소의 크기는 항상 동일하다.)
    double* c = nullptr; // 아무 주소도 가리키고 있지 않다는 의미로 초기화, 0도 많이 사용

    cout << sizeof(int) << " " << sizeof(double) << endl;     // 4 8
    cout << sizeof(int*) << " " << sizeof(double*) << endl; // 둘다 8바이트
    cout << sizeof(b) << " " << sizeof(c) << endl;

    // 포인터 연산과 배열

    // size_t 안내 (여기서는 주소를 10진수로 변환 용도)
    cout << sizeof(size_t) << endl; // 8
    cout << size_t(b) << " " << size_t(b + 1) << " " << size_t(b + 2) << endl;
    cout << size_t(c) << " " << size_t(c + 1) << " " << size_t(c + 2) << endl;

    // sizeof(char) == 1입니다. char* e = 0; e + 15 는 몇일까요?
    // 확인도  직접 해보세요

    // 문자열, 배열 연결시키기

    char my_str[] = { 'h', 'e', 'l', 'l', 'o' }; // "Hello"

    char* ptr = my_str; // 배열의 이름은 포인터

    cout << *(ptr + 3) << endl; // 추측해보세요.

    return 0;
}
profile
코딩 일지

0개의 댓글