C++에서 대상 을 가리 키 는 지침 을 분석 합 니 다.

4609 단어 C++
C++대상 을 가리 키 는 일반적인 지침
포인터 변 수 를 const 형 으로 설명 합 니 다.이 포인터 값 은 항상 초기 값 으로 유지 되 며 변경 할 수 없습니다.
예:

  Time t1(10,12,15),t2; //    
  Time * const ptr1; //const          ,  ptr1     
  ptr1=&t1; //ptr1    t1,         
  ptr1=&t2; //  ,ptr1      
대상 을 가리 키 는 일반적인 지침 을 정의 하 는 일반적인 형식 은:

     * const      ;
포인터 변 수 를 정의 할 때 초기 화 할 수도 있 습 니 다.예 를 들 어 위의 두 번 째,세 번 째 줄 을 합 칠 수도 있 습 니 다.

  Time * const ptr1=&t1; //  ptr1  t1
대상 을 가리 키 는 일반적인 포인터 변수의 값 은 바 꿀 수 없습니다.즉,항상 같은 대상 을 가리 키 지만 가리 키 는 대상(예 를 들 어 t1)의 값 을 바 꿀 수 있 습 니 다.
언제 대상 을 가리 키 는 일반적인 지침 을 사용 해 야 합 니까?포인터 변 수 를 대상 과 고정 적 으로 연결 하려 면(즉,이 포인터 변 수 는 항상 대상 을 가리 키 는 것)const 형 포인터 변수 로 지정 하면 오 작 동 을 방지 하고 안전성 을 높 일 수 있 습 니 다.
흔히 상 지침 을 함수 의 형 삼 으로 하 는데 그 목적 은 함수 수행 과정 에서 지침 변수의 값 을 바 꾸 어 원래 의 대상 을 가리 키 지 못 하 게 하 는 것 이다.함수 실행 과정 에서 이 형 삼 의 값 을 수정 하면 컴 파일 시스템 은 오 류 를 발견 하고 오류 정 보 를 제공 합 니 다.이렇게 하면 인공 으로 형 삼 값 이 수정 되 지 않도록 하 는 것 보다 더 믿 을 수 있 습 니 다.
C++대상 을 가리 키 는 포인터 변수
정상 적 인 대상 을 가리 키 는 포인터 변수의 개념 과 사용 을 쉽게 이해 하기 위해 먼저 정상 적 인 변 수 를 가리 키 는 포인터 변 수 를 파악 한 다음 에 정상 적 인 대상 을 가리 키 는 포인터 변 수 를 연구 합 니 다.일반적인 변 수 를 가리 키 는 포인터 변 수 를 정의 합 니 다 ptr:

  const char *ptr;
const 의 위 치 는 맨 왼쪽 에 있 습 니 다.형식 명 char 와 연결 되 어 있 습 니 다.포인터 변수 ptr 가 가리 키 는 char 변 수 는 상수 변수 이 므 로 ptr 를 통 해 값 을 바 꿀 수 없습니다.
상수 변 수 를 가리 키 는 포인터 변 수 를 정의 하 는 일반적인 형식 은 다음 과 같 습 니 다.

  const     *     ;
몇 가지 설명:
1)변수 가 상 변수 로 밝 혀 지면 상 변 수 를 가리 키 는 포인터 변수 로 만 가리 킬 수 있 고 일반적인(const 형 변 수 를 가리 키 는)포인터 변수 로 가리 킬 수 없습니다.예:

  const char c[] ="boy"; //   const    char   
  const char * pi;  //  pi   const  char       
  pi =c;  //  ,pi     (char      )
  char *p2=c; //   ,p2            
2)상수 변 수 를 가리 키 는 포인터 변 수 는 상수 변 수 를 가리 키 는 것 외 에 const 로 밝 혀 지지 않 은 변 수 를 가리 킬 수 있 습 니 다.이 포인터 변 수 를 통 해 이 변수의 값 을 바 꿀 수 없습니다.예:

  char cl ='a'; //      cl,      const
  const char *p; //               p
  p = &cl; // p      cl
  *p = 'b'; //  ,    p    cl  
  cl = 'b'; //  ,    p  cl,cl     
3)함수 의 형 삼 이 비 const 형 변 수 를 가리 키 는 지침 이 라면 실 삼 은 비 const 변 수 를 가리 키 는 지침 만 사용 할 수 있 고 const 변 수 를 가리 키 는 지침 을 사용 할 수 없습니다.그러면 함 수 를 실행 하 는 과정 에서 형 삼 지침 변수 가 가리 키 는 변수(즉,실 삼 지침 이 가리 키 는 변수)의 값 을 바 꿀 수 있 습 니 다.
함수 의 형 삼 이 const 형 변 수 를 가리 키 는 지침 이 라면 함 수 를 실행 하 는 과정 에서 포인터 변수 가 가리 키 는 변수의 값 을 바 꿀 수 없 기 때문에 실제 인삼 은 const 변 수 를 가리 키 는 지침 이나 비 const 변 수 를 가리 키 는 지침 을 허용 합 니 다.예:

  const char str[ ] = "boy"; //str   const     
  void fun( char * ptr) ; //  fun       const      
  fun(str); //  fun  ,   const     ,  
형 삼 은 비 const 형 변 수 를 가리 키 는 포인터 변수 이기 때문에 함수 수행 과정 에서 가리 키 는 변수의 값 을 바 꿀 수 있 습 니 다.그러나 형 삼 지침 과 실 삼 지침 은 같은 변 수 를 가리 키 고 실 삼 은 const 변수의 주소 이 며 가리 키 는 변수의 값 은 바 꿀 수 없습니다.이것 은 모순 이 발생 한다.따라서 C++는 비 const 변수의 주소(또는 비 const 변 수 를 가리 키 는 포인터 변수)를 실제 참조 하도록 요구 합 니 다.

위의 표 의 대응 관 계 는(2)에서 소개 한 포인터 변수 와 그 가 가리 키 는 변수의 관계 와 일치 합 니 다.상 변 수 를 가리 키 는 포인터 변 수 는 const 와 비 const 형 변 수 를 가리 킬 수 있 고 const 형 변 수 를 가리 키 는 포인터 변 수 는 비 const 변 수 를 가리 킬 수 있 습 니 다.
이상 에서 소개 한 것 은 상 변 수 를 가리 키 는 포인터 변수 입 니 다.상 대 를 가리 키 는 포인터 변수의 개념 과 사용 은 이와 유사 합 니 다.'변수'를'대상'으로 바 꾸 면 됩 니 다.
1)대상 이 일반 대상 으로 밝 혀 졌 다 면 일반(const 형 대상 이 아 닌)포인터 변수 로 만 가리 킬 수 있 습 니 다.
2)일반적인 대상 을 가리 키 는 포인터 변 수 를 정의 하고 비 const 대상 을 가리 키 면 가리 키 는 대상 은 포인터 로 바 꿀 수 없습니다.예:

  Time t1(10,12,15); //  Time   t1,   const   
  const Time *p = &t1; //  p           ,   t1
  t1.hour = 18; //  ,t1     
  (* p).hour = 18; //  , _        t1  
어떤 상황 에서 도 t1 의 값 이 바 뀌 지 않 기 를 원한 다 면 const 형 으로 정의 해 야 합 니 다.예 를 들 어:

  const Time t1(lO,12,15);
일반적인 대상 을 가리 키 는 포인터 변수 와 대상 을 가리 키 는 일반적인 포인터 변 수 는 형식 과 역할 상의 차이 에 주의 하 십시오.

  Time * const p; //          
  const Time *p; //          
3)일반적인 대상 을 가리 키 는 지침 은 함수 의 형 삼 에 가장 많이 사용 되 는데 그 목적 은 형 삼 지침 이 가리 키 는 대상 을 보호 하여 함수 수행 과정 에서 수정 되 지 않도록 하 는 것 이다.
이러한 규칙 을 기억 하 십시오.함 수 를 호출 할 때 대상 의 값 이 수정 되 지 않 으 려 면 형 삼 을 일반 대상 을 가리 키 는 지침 변수 로 정의 하고 대상 의 주 소 를 실제 인삼 으로 해 야 합 니 다(대상 은 const 또는 비 const 형 일 수 있 습 니 다).이 대상 이 함수 호출 과정 에서 변 하지 않 을 뿐만 아니 라 프로그램 실행 과정 에서 도 변 하지 않 으 라 고 요구 하면 const 형 으로 정의 해 야 합 니 다.
4)일반적인 대상 을 가리 키 는 포인터 변 수 를 정의 하면 가리 키 는 대상 의 값 을 바 꿀 수 없 지만 포인터 변수 자체 의 값 은 바 꿀 수 있 습 니 다.

좋은 웹페이지 즐겨찾기