24.07.17 00:23 작성
·
193
답변 2
1
2024. 07. 17. 23:28
안녕하세요,
제가 설명을 좀 띄엄띄엄했나 싶습니다.
연산자에 대해서 따로 특별 영상을 만들어야겠습니다..
해설을 좀 해드리자면,
우선 ++하고 그냥 +1을 출력하는 것은 아예 다른 이야기입니다.
++는 말 그대로 하나를 증가시킨 이후에 나에게 반영하는 것입니다.
예를 하나 들어보겠습니다.
int a = 1;
printf("%d || ", ++a);
printf("%d", a);
이것의 출력값은 2 || 2 가 출력됩니다.
a가 1+1이 되면서 증가하자마자 출력되고, 그 다음에 a 그 자체를 출력했는데도 여전히 2입니다.
int a = 1;
printf("%d || ", a+1);
printf("%d", a);
이 경우는 어떨까요?
출력값은 2 || 1 이 됩니다.
왜냐하면 출력 자체에 그냥 1을 더해서 출력한거지, a는 바뀐 것이 없기 때문입니다.
후위 연산자(++, --가 변수의 뒤에 있는 경우)는 관련 연산을 먼저하고 줄이 넘어갈 때 증가나 감소를 합니다.
예제를 보면
int a = 1;
printf("%d || ", a++);
printf("%d", a);
이 경우에는 출력값이 1 || 2 입니다. ++가 후위 연산자이기 때문에 관련 연산(출력이나 덧셈 등)을 다 하고 줄이 넘어갈 때 증가합니다. 이것은 그 자체가 증가하기 때문에 a는 하나가 증가된 값이 들어갑니다.
다시 문제로 돌아옵시다.
ptr와 arr은 완전히 다른 애입니다. 하나는 손가락이고 하나는 메모리가 주~~욱 연결되어서 오밀조밀하게 붙어있는 숫자 덩어리입니다.
ptr은 손가락이고, 플러스 하나가 증가되면 그냥 다음 것을 가리킵니다. arr은 그냥 존재하는 배열 자체입니다.
arr은 그래서 누적되거나 바뀐 것이 없는 것이고, ptr은 손가락이 왔다갔다하면서 계속 누적되며 여기저기를 가리킵니다.
그래서 값이 달라지는 것입니다.
이해에 도움이 좀 되셨을까요?
2024. 07. 26. 23:38
안녕하세요.
섹션 "드물게 출제되는 문법"의 연산자 우선순위 부분을 꼭 재수강 부탁드립니다.
++*ptr은 메모리 연산자가 먼저 적용됩니다. 그래서 값을 가져오고, 그 값을 증가시킵니다.
*ptr++의 경우에는 후위연산자가 먼저입니다.
그래서 포인터를 증가시킬 (예정)것인데, 다음 줄로 가서 하나가 증가하겠죠.
후위연산자니까요.
그래서 일단은 현재 가리키고 있는 것의 값을 가져옵니다.
(그리고 다음 줄에 갔을 때 ptr은 다음 것을 가리키고 있음)
2024. 07. 27. 11:07
네 필기 너무 예쁘게 잘하셨네요.
1. ++*ptr
: ptr이 가리키는 값. 배열이 바로 할당되었을 경우에는 첫 번째 요소 증가
*ptr++
: 포인터 ptr은 증가(하는데 너 나중에 커지고 일단 지금은 그대로야). 현재 포인터가 가리키고 있는 값을 가져와라
3. *++ptr
: ptr을 전위로 증가시키고 그 다음에 그 값을 가져와라. 배열을 바로 할당받은 상태라고 가정한다면 2번째 요소(1번 인덱스)의 값을 가져옵니다.
시간 여유가 되실 때 수강평 하나 부탁드립니다.. 😃
1
++*ptr
++*ptr
는 전위 증가 연산자로, 다음과 같이 작동합니다:
ptr
이 가리키는 값을 먼저 증가시킵니다.
증가된 값을 사용합니다.
예를 들어, 만약 ptr
이 arr[0]
을 가리키고 있고, arr[0]
의 값이 20이라면:
++*ptr
는 *ptr
(즉, arr[0]
)의 값을 21로 증가시킵니다.
그 다음, 증가된 값을 반환하여 출력합니다.
*ptr++
*ptr++
는 후위 증가 연산자로, 다음과 같이 작동합니다:
ptr
이 가리키는 현재 값을 사용합니다.
ptr
을 다음 요소로 이동시킵니다.
예를 들어, 만약 ptr
이 arr[0]
을 가리키고 있고, arr[0]
의 값이 20이라면:
*ptr++
는 *ptr
(즉, arr[0]
)의 현재 값을 사용하여 출력합니다.
그 다음, ptr
을 arr[1]
로 이동시킵니다.
2번은 *(arr+1) 이고 5번은 (*arr+1) 입니다.
2번은 배열요소를 한칸 옮겨서 30 값이 나옵니다.
5번은 *arr값 21에 +1을 해줘서 22값이 나옵니다.
저도 같은 부분에서 막혀서 공유합니다~
2024. 07. 23. 22:56
좋은 설명 감사합니다.