>백엔드 개발 >C++ >C에서 `*ptr`, `* ptr`, ` *ptr` 및 `(*ptr) `의 차이점은 무엇입니까?

C에서 `*ptr`, `* ptr`, ` *ptr` 및 `(*ptr) `의 차이점은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-11 03:03:12859검색

What's the Difference Between `*ptr  `, `*  ptr`, `  *ptr`, and `(*ptr)  ` in C?

포인터 표현식: ptr, ptr 및 *ptr 탐색

이러한 포인터 표현식은 C 프로그래밍에서 자주 사용됩니다. 이해하기 까다로울 수 있습니다. 자세한 설명은 다음과 같습니다.

1. *ptr

  • 우선순위: *(간접)가 (증분)보다 우선순위가 높습니다.
  • 표현값: 평가합니다. 이전에 ptr이 가리키는 값으로 증가.
  • 부작용: ptr을 메모리 단위만큼 증가시킵니다.

예:

int a = 5;
int *ptr = &a;

*ptr++; // evaluates to 5, then increments ptr to point to the next integer

2. * ptr

  • 우선순위:(증분)과 *(간접)의 우선순위는 같습니다.
  • 표현값: 평가합니다. 이후 ptr이 가리키는 값으로 증가.
  • 부작용: ptr을 하나의 메모리 단위로 증가시킵니다.

예:

int a = 5;
int *ptr = &a;

*++ptr; // evaluates to 6 (a++) and increments ptr

3. *ptr

  • 우선순위:(증분)과 *(간접)의 우선순위는 동일합니다.
  • 연관성: 오른쪽- 왼쪽으로.
  • 표현 값: ptr이 가리키는 값을 증가시킵니다.
  • 부작용: 없음.

예:

int a = 5;
int *ptr = &a;

++*ptr; // increments a to 6

4. (*ptr)

  • 우선순위: 괄호는 우선순위 규칙을 재정의합니다.
  • 표현식 값: 역참조된 값으로 평가됩니다. 이전에 ptr 증가합니다.
  • 부작용: 역참조된 값을 증가시킵니다.

예:

int a = 5;
int *ptr = &a;

(*ptr)++; // evaluates to 5, then increments *ptr to 6

ptr , ptr, ptr이 다음과 같은 경우 충돌이 발생할 수 있습니다. 배열 식별자, while (ptr)은 ptr이 문자열 리터럴을 가리키는 경우 충돌이 발생할 수 있습니다.

위 내용은 C에서 `*ptr`, `* ptr`, ` *ptr` 및 `(*ptr) `의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.