#include <stdio.h>
int main (void)
{
int *p, y[3]={2, 6, 9}, a;
p=y;
a=*p++;
printf("%d",a);
printf("%d",*p);
return 0;
}
이거 도대체 a가 왜 2고 *p가 6이 나오는거야?
이해가 도저히 안되 부탁이야ㅠㅠ 설명좀
#include <stdio.h>
int main (void)
{
int *p, y[3]={2, 6, 9}, a;
p=y;
a=*p++;
printf("%d",a);
printf("%d",*p);
return 0;
}
이거 도대체 a가 왜 2고 *p가 6이 나오는거야?
이해가 도저히 안되 부탁이야ㅠㅠ 설명좀
*p++의 계산결과는 *p, 식을 계산하고 나서 p의 값 1단위 증가
++ -- 증감연산자가 포인터보다 우선순위가 높다 그리고 *p++이거슨 후치연산이기 반환후에 증가한다.
고로 a는 첫번쨰 주소가 들어간후 p가 증가하고 두번째 인자 6을 가리키는게다
추가로 (*p)++ 이것과는다르다 이거슨 가로떄문에 *가 우선순위가 높아진다 고로 가리키는 값이 1증가하게되것지
a=*p++;
a = *p++ // a에 *p를(2) 대입 한 후에 *p값 증가(6) 그럼 현재 a는 2가 되있고 *p는 배열 인덱스 값이 올라갔으니까 6 이므로 출력하면 글케됨