#include <stdio.h>
int mainffff(void){
int arr[5] = {1, 2, 3, 4, 5};
int * ptr = &arr[4];
int i;
int total = 0;
for(i = 0; i < 5; i++){
total += *(ptr--); <<<1
//total += *(ptr-1); <<<2
//total += *(ptr); ptr--; <<<3
}
printf("%d \n", total);
}
횽들은 쓱 보면 알겠지만, 위에서 1하고 3이 같은 값이 출력 되는데,
*(ptr--)은 첫 계산부터 arr배열의 네번째 값을 토탈 값으로 집어 넣게 되는거 아냐??
어떻게 <<<3하고 같은 값이 나올수가 있냐
내가 질문해도 좀 멍청한 질문같긴 한데, 도저히 모르겠다. 내가 알고 있는 한으로는 *(ptr--)이면
1 뺀 값으로 계산이 실시되어야 할텐데 그게 아니네..
이거 왜 이런거야? 그냥 외워 이러지 말고 알려주라
x--의 계산결과는 빼기전 x의 값. 계산후 x 1 감소
아 빼기 전 한번 계산하고 빼는거였구나. 지금까지 저것도 모르고 잘 넘어왔네.. 근데 <<<2 값은 20이 나오는데 그건 왜그러는거야?
--는 선연산 후감소야 [i]
맞나? 여튼 먼저 들어가고 빼는거 [i]
아 이런 질문 해서 미안 ㅜ
알려줘서 고마워
ptr 값 자체가 마이너스 된게 아니구나 ㅜㅜ
ㄴㄴ 20나와
아까 알려준대로 4가 다섯번 더해진거같애
ptr-1이 arr[3] 주소값 담을텐데 그럼 4잖애 [i]
아맞다 4를 5번더해준거맞구나 0번지부터 시작하니까 [i]
*(ptr-1) == arr[3]을 다섯번 더함
5,4,3,2,1 다더하고싶으면 반복변수인 i와 포인터연산을해야할듯 [i]
이해했음 고마워 횽들
하..pointer..