>  기사  >  백엔드 개발  >  *p++와 (*p)++의 차이점은 무엇입니까

*p++와 (*p)++의 차이점은 무엇입니까

醉折花枝作酒筹
醉折花枝作酒筹원래의
2021-07-09 11:47:2256413검색

"*p++"와 "(*p)++"의 차이점은 다음과 같습니다. 1. "*p++"는 p가 가리키는 단위의 값을 나타내고, p는 다음 단위를 가리킵니다. 즉, p가 증가합니다. 1. "*p++"는 다음 주소를 나타냅니다. 2. "(*p)++"는 *p가 가리키는 데이터의 값에 1을 더하는 것을 의미합니다.

*p++와 (*p)++의 차이점은 무엇입니까

이 튜토리얼의 운영 환경: Windows 7 시스템, C++17 버전, Dell G3 컴퓨터.

차이:

1. *p++는 p가 가리키는 단위의 값을 나타내고, p는 다음 단위를 가리킨다. 즉, p는 1씩 증가한다. *p++는 다음 주소를 나타냅니다.

2. (*p)++는 *p가 가리키는 데이터의 값에 1을 더하는 것을 의미합니다.

C 컴파일러는 *와 ++를 동일한 우선순위의 연산자로 간주하고 오른쪽에서 왼쪽으로 결합하므로 *p++의 ++는 p에만 작동하고 *(p++)와 동일한 의미를 갖습니다. ( *p)++에서는 ()가 * 및 ++보다 우선순위가 높으므로 ++는 () 내의 *p 표현식에 따라 작동합니다.

예:

int x,y,a[]={1,2,3,4,5},*p=a,*q=a;

x=*p++;//이 문장을 실행합니다. 이후 x=a[0]=1, p=a+1

y=(*q)++;//이 문장을 실행한 후, y=a[0]+1=2, q still=a

추가 정보:

검증 프로그램 1

#include"stdio.h"
void main()
{
int a=2;
int*p=&a;
int*pold;//记录P指向的地址,为了作为比较使用
pold=p;
//-----------原来的信息
printf("原来的a=%d",a);
printf("原来的p=%x",p);
printf("原来的pold=%x",pold);
//----------进行变化
printf("*p++的结果=%d,a的结果a=%d",*p++,a);
printf("地址变化的结果p-pold=%x",p-pold);
}

프로그램 2

#include"stdio.h"
void main()
{
int a=2,*p=&a,*q=&a;
printf("%d%d",(*p),a);
printf("%d%d%d%d",(*p)++,*p++,*q++,a);
printf("%d",a);
}

프로그램 3:

#include"stdio.h"
void main()
{
int a=2,*p=&a,*q=&a;
printf("%d%d",(*p),a);
printf("%d%d%d",*p++,(*p)++,*q++);
p=&a;q=&a;
printf("%d%d%d%d",a,*p,(*q)++,a);
printf("%d%d%d%d",a,++(*p),++(*q),a);
printf("%d",a);
}

요약:

*p++는 먼저 *p의 값을 빼낸 다음 p++

(* p) ++는 *p의 값을 먼저 빼는 것이고, 이 값을 ++

*(P++)는 *p의 값을 먼저 빼는 것이고, p++

그래서 *p++는 *(와 동일합니다. P++)

그리고 printf의 연산 순서는 오른쪽에서 왼쪽으로 진행됩니다. 또한, 전체 연산식이 계산된 후 right++가 실행되며, right++의 실행 순서는 왼쪽에서 오른쪽입니다. left++는 변수를 발견하면 즉시 변수 값을 증가시킵니다.

printf

#include"stdio.h"
void main()
{
int a=2;
printf("a++=%d,++a=%d,a++=%d",a++,++a,a++);
printf("a=%d",a);
}

의 작업 순서를 확인하세요. 권장 튜토리얼: "C#"

위 내용은 *p++와 (*p)++의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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