c++ 초보자가 걸려 넘어지는'값형, 바늘형, 참조형'

3128 단어 포인터C++

대상


c/c++를 통해if문장 등 제어문장 이해
지침이 어려울 것 같은데...
"*,&"같은 로고를 많이 봤는데 잘 모르겠어요...
이런 느낌 받으신 분들.

값형


이미지 1(메모리 값은 실제 2진수이지만 16진수로 생략됨)

어떤 사람들은 지침을 이해하기 어렵지만 많은 값형이 워낙 모호하기 때문에 간단하게 설명한다.(주소와 지침의 차이를 아는 사람은 건너뛰어도 괜찮을 것이다.)
프로그램에서 사용하는 모든 값은 그림 1처럼 메모리라는 물리 장치에 저장됩니다.
보시다시피 변수 i, f의 값은 같은 값 (0001) 이지만 프로그램 측에서 사용할 때 형식 정보를 제공합니다. 프로그램의 값은 int와flat와 다르다.

수치 유형 요약

  • 값은 스토리지에 저장됩니다.
  • 어떤 종류로 읽느냐는 완전히 다르다. 
  • 포인터형


    이미지 2

    수치형에서는 생략되었지만, 메모리에는 주소마다 byte가 분배되어 있다는 표시가 있다.
    현실에서 말하는 집(값)과 그 주소(주소)의 관계를 고려할 수 있다면 이해하기 쉬울 것이다.
    그리고 그 주소값으로 유지되는 유형을 땡땡이 포인터라고 합니다.
    (030은 이 주소에 저장된 변수 유형입니다.)
    그림 2를 보면 변수 ip가 변수 i의 주소를 값으로 유지하고 있음을 알 수 있습니다.

    포인터 선언


    형(: 별표)
    // intを参照するポインタの宣言
    int* ip; // intポインタ
    
    지침형도 하나의 유형에 불과하기 때문에 지침의 지침을 발표할 수 있다.
    포인터를 이중 포인터라고 합니다.
    int** ipp; // intのダブルポインタ
    
    // ↑と同じ意味
    using IntP = int*; // intポインタ型を定義
    IntP* = ipp2; // intポインタ型のポインタ
    

    인스턴스에서 주소 가져오기


    &변수
    int i;
    int* ip = &i;
    

    포인터 값이 가리키는 주소에 존재하는 값을 가져옵니다


    "* 포인터 변수"
    // i をポインタを通して i2 に代入。
    int i;
    int* ip = &i;
    int i2 = *ip
    

    참조 유형


    참조 유형은 기본적으로 포인터와 마찬가지로 주소를 유지하는 유형입니다.
    포인터는 참조 대상을 수정할 수 있지만 참조 유형은 초기화할 때만 참조 대상을 변경할 수 있습니다.그러니까 콘스트 바늘 모양의 물건.
    또한 인코딩도 크게 다르다. 아래와 같다.

    참조 유형 선언 및 대입


    유형 & 변수 이름 = 참조 대상 변수
    참조형은 초기화할 때만 대입할 수 있기 때문에 선언이나 구성원 초기화 시대입이 필요하다.
    int i;
    int& ref = i; // &iとする必要はない。
    

    참조 유형에서 값 가져오기


    참조 변수(일반 변수와 동일만 설명)
    int i;
    int& ref = i;
    
    // 値取得時も *ref 等の特別な記述をする必要がない。
    int i2 = ref; 
    

    역인용부호의 사용 방법


    *(별표)

  • 포인터 유형 선언
  • 포인터에서 참조 대상 값 가져오기
  • '&'(빵 샌드위치)

  • 인스턴스에서 주소 가져오기
  • 참조 유형 선언
  • ※ 특히 샌드위치는 헷갈리기 쉬우니 조심하세요!!!

    다음 c++er로 가는 길

  • const Type은 특이한 타입입니다. 조금만 조사해보시면 재미있을 것 같아요
  • new delete를 통해 인스턴스를 생성, 폐기합니다.
  • 좋은 웹페이지 즐겨찾기