이 둘의 차이점은 무엇입니까?
x = x + 5
* y = * y + 5 (여기서 * y는 x의 주소를 가리킴)
내가 아는 한, 둘 다 동일한 값을주고 메모리 주소의 내용을 변경합니다. 실제 차이가 있습니까? 여분의 인출이 필요할 때 이와 같은 상황에서 포인터를 사용하는 이유는 무엇입니까?
-
답변 # 1
-
답변 # 2
일반적으로 한 부분의 변경 사항이 다른 부분에 반영되어 코드의 여러 부분이 동일한 값을 공유하고 작동 할 때 포인터를 사용합니다. 이것은 다른 부분에 방금 복사 된 값을 갖는 것과 대조적으로 "연결"을 원래 값으로 잃어 버립니다.
예를 들어, 공유 값으로 작동하기 위해 정수 값에 대한 포인터를 함수에 전달할 수 있습니다. 이 함수는 포인터를 역 참조하여 "원래"전달 된 값을 직접 변경할 수 있습니다. 반대로, "값별"정수 값을 함수에 전달하면 함수가 사본에서 작동하며 "원래"값을 직접 변경할 기회가 없습니다.
이전 또는 후자가 올바른 선택인지 여부는 일반적인 상태를 공유해야하는지 또는 코드의 일부를 분리 하려는지에 따라 다릅니다.
Value before: 5 Value after: 6
관련 자료
- android - Kotlin에서 단일 표현식 fun과 var를 사용하는 것의 차이점은 무엇입니까?
- 파이썬에서 z = x + y와 z = f"{x} {y}"를 사용하는 것의 차이점은 무엇입니까?
- python - var = fun ()과 var = fun의 차이점
- java - 이 두 코드의 차이점을 찾는 방법은 무엇입니까? 둘 다 실행될 때 동일한 대답을 제공하지만 웹 사이트에서 하나의 코드가 부분적으로 정확하다고 말합니다
- 두 개의 다른 행과 R의 다른 열의 차이
- python - 두 배열 간의 가능한 최소 차이 찾기
- R의 다른 작업에 대한 날짜 차이 계산
- php - "리턴 뷰"와 "리턴 메이크 - 뷰"의 차이점은 무엇입니까?
- c++ - const int에 포인터 값을 int 포인터에 할당 할 수없는 이유는 무엇입니까?
- c++ - const string&s와 string&s의 차이점은 무엇입니까?
- javascript - Firebase Firestore는 타임 스탬프와 현재의 시차를 얻습니다
- java - 주어진 두 정수의 합의 차이를 찾는 재귀 방법
- math - 두 숫자 사이의 백분율 차이 얻기 JavaScript
- amazon web services - 일반 AWS EC2 인스턴스와 ML AWS EC2 인스턴스의 차이점은 무엇입니까?
- r - "x"라고 표시된 모든 셀에 대해 한 열에있는 두 행의 차이를 찾을 수 있습니까?
- lisp - `# '(lambda…`와`(lambda…`사이에 차이점이 있습니까?
- javascript - 여백을 사용하지 않고 li 태그 사이에 공간을 만드는 방법은 무엇입니까?
- python - on_message_delete ()와 on_raw_message_delete ()의 차이점
- lubridate - R에서 날짜 간의 시차를 계산할 수 있습니까?
- python - Google Storage에서 bucket ()과 get_bucket ()의 차이점
와이즈 비즈
그렇지 않을 것입니다.
포인터로 유용하게 사용할 수있는 작은 예입니다. 인수를 하나씩 증가시키는 함수를 작성한다고 가정 해 봅시다. 포인터 없이는 할 수 없습니다. 다음과 같이 보일 수 있습니다 :
이제 다음과 같이이 함수를 사용할 수 있습니다 :
이 프로그램은 이것을 인쇄합니다 :