
비교 차트
비교 근거 | 바늘 | 참고 |
---|---|---|
기본 | 포인터는 변수의 메모리 주소입니다. | 참조는 변수의 별칭입니다. |
보고 | 포인터 변수는 포인터 변수 '*'앞에 포인터 변수에 저장된 주소에있는 값을 반환합니다. | 참조 변수는 참조 기호 '&'가 앞에 오는 변수의 주소를 반환합니다. |
연산자 | *, -> | & |
Null 참조 | 포인터 변수는 NULL을 참조 할 수 있습니다. | 참조 변수는 절대로 NULL을 참조 할 수 없습니다. |
초기화 | 초기화되지 않은 포인터를 만들 수 있습니다. | 초기화되지 않은 참조는 절대로 만들 수 없습니다. |
초기화 시간 | 포인터 변수는 프로그램의 어느 시점에서나 초기화 될 수 있습니다. | 참조 변수는 생성시에만 초기화 될 수 있습니다. |
재 초기화 | 포인터 변수는 필요한만큼 여러 번 다시 초기화 할 수 있습니다. | 참조 변수는 프로그램에서 다시 초기화 할 수 없습니다. |
포인터의 정의
"포인터"는 다른 변수의 메모리 위치를 보유하는 변수입니다. 포인터 변수가 사용하는 연산자는 * 및 ->입니다. 포인터 변수의 선언에는 기본 데이터 형식 뒤에 '*'기호와 변수 이름이옵니다.
유형 * var_name;
예를 통해 포인터를 이해합시다.
int a = 4; int * ptr = & a; cout <여기에는 정수 변수 a와 변수 a의 주소를 저장하는 포인터 변수 ptr이 있습니다.
포인터 산술
포인터 변수는 "더하기"및 "빼기"와 같은 두 개의 산술 연산자로 조작 할 수 있습니다. 추가는 "증분"이라고하고 빼기는 "감소"라고합니다. 포인터 변수가 증가 할 때 포인터 변수는 기본 유형의 다음 변수의 메모리 위치를 가리 킵니다. 포인터 변수가 감소하면 기본 유형의 이전 변수의 메모리 위치를 가리 킵니다. 따라서 배열은 포인터 변수로 효율적으로 액세스 할 수 있습니다.
다중 간접 참조
포인터는 목표 값을 가리키는 다른 포인터 변수를 가리 킵니다. 이런 종류의 포인터는 항상 다른 포인터 변수의 주소로 초기화됩니다. 포인터에 대한 포인터의 선언은 다음과 같습니다.
** var_name;을 입력하십시오.예를 들어 그것을 공부합시다.
int a = 4; int * ptr1 = & a; int ** ptr2 = & ptr1; cout <함수 포인터
함수가 변수가 아니라는 것을 알기 때문에 포인터 변수에 할당 할 수있는 메모리 위치를 여전히 가지고 있습니다. 포인터가 함수를 가리키면 해당 함수 포인터로 함수를 호출 할 수 있습니다.
포인터에 대해 기억해야 할 중요한 사항.
- 포인터 변수는 초기화없이 만들 수 있으며 프로그램의 어느 위치에서나 초기화 할 수 있습니다.
- 포인터 변수는 다른 변수로 다시 초기화 될 수 있습니다.
- 포인터 변수는 NULL을 참조 할 수 있습니다.
참조 정의
참조 변수는 해당 참조 변수에 지정된 변수를 참조하는 데 사용됩니다. 참조 변수가 사용하는 연산자는 '&'입니다. 참조 변수의 선언에는 기본 유형과 '&'기호, 변수 이름이 차례로 포함됩니다.
& refer_var_name = var_ 이름 입력;여기서 유형은 데이터 유형이고 & 연산자는 참조 변수임을 확인합니다. refer_var_name은 참조 변수의 이름입니다. var_name은 참조 변수가 참조하게하려는 변수의 이름입니다.
예제를 통해 참조 변수를 이해합시다.
int a = 4; int & b = a; // b는 ab = 6을 나타냅니다. // 이제 a = 6여기서 int 유형의 변수에는 값 4가 지정됩니다. 참조 변수에는 변수 a가 지정됩니다. 즉, b는 a의 별명입니다. 이제 b에 다른 값을 할당 할 때 a의 값을 수정합니다. 따라서 참조 변수에 대한 변경은 해당 참조 변수에서 참조하는 변수에서도 발생한다고 볼 수 있습니다.
가장 중요한 점은 참조 변수가 생성 당시에 초기화되어야한다는 것입니다. 참조 변수가 변수로 초기화되면 다른 변수를 참조하도록 다시 초기화 할 수 없습니다. 참조 변수에 값을 할당하는 순간 참조 변수가 가리키는 변수에 해당 값을 할당합니다. 참조 변수는 절대로 NULL을 참조 할 수 없습니다. 참조 변수에 대해 산술 연산을 수행 할 수 없습니다.
참조 변수는 세 가지 방법으로 사용할 수 있습니다.
- 함수 반환 값으로.
- 함수 매개 변수로 사용됩니다.
- 독립 실행 형 참조로.
포인터와 참조의 주요 차이점
- 참조는 다른 이름으로 참조 될 수 있도록 변수를 참조하는 다른 이름을 만드는 것과 같습니다. 반면 포인터는 단순히 변수의 메모리 주소입니다.
- 포인터 변수 앞에 '*'가 있으면 주소가 포인터에 저장되어있는 변수의 값을 반환합니다. 참조 변수 앞에 '&'가 있으면 해당 변수의 주소가 반환됩니다.
- 포인터 연산자는 * 및 -> 반면, 참조 연산자는 &입니다.
- 포인터 변수는 null을 가리키는 변수의 주소를 포함하지 않습니다. 반면에 참조 변수는 결코 Null을 참조 할 수 없습니다.
- 단위 화 된 포인터 변수는 항상 만들 수 있지만 참조 변환을 만들 수 없도록 일부 변수의 별칭이 필요할 때 참조를 만듭니다.
- 포인터를 다시 초기화 할 수는 있지만 일단 피처를 초기화하면 다시 초기화 할 수 없습니다.
- 빈 포인터를 만들고 언제든지 초기화 할 수 있지만 참조를 만들 때만 refrence를 초기화해야합니다.
노트 :
Java는 포인터를 지원하지 않습니다.
결론
포인터와 참조는 모두 다른 변수를 가리 키거나 참조하는 데 사용됩니다. 그러나 둘 다 사용법과 구현이 다릅니다.