int a[5]={1,2,3,4,5} int *pa=NULL; int hap=0,cnt=0; pa=a; for(cnt=0;cnt<5;cnt++) { hap+=*pa++; printf("%d",pa) } 간략해서 이렇게 합을 구하고 각 배열a[0[,a[1]의 주소를 바로 pa로 구하던데 제가 실제로 코딩짜보면 당연히 a[0]의 주소값으로 먼저 안나오고 첫 시작이 a[1]의 주소와 그의 값이 나오게 됩니다. 책이 잘못나온건가요? 여기서 합이랑 같이 a[0]의 주소값부터 쭉 나오게 할려면 어떤 코드가 필요할까요?
84
1
0
윈비·2024-07-19
*pa++ 표현식의 해석 순서와 관련이 있는데요. *pa++는 *(pa++)로 해석되며, 이 경우 pa의 값이 먼저 사용되고 나서 pa가 증가합니다. 따라서 printf가 호출될 때 pa는 이미 다음 요소를 가리키고 있습니다. 이로 인해 printf는 a[0]의 주소가 아닌 a[1]의 주소를 출력합니다. 해결하려면 아래와 같이 printf를 *pa를...