int z;
void f(int x, int *y)
{ *y=3;
z += *y;
printf("(x, *y, z)=(%d, %d, %d)\n", x, *y, z);
x = 2;
z += x;
printf("(x, *y, z)=(%d, %d, %d)\n", x, *y, z);
}
void main()
{ z = 5;
f(z, &z);
}
답이 (x,z)=(5,6,6)
(x,z)=(2,8,8)
이건데 왜그런지 설명해줄 행님 제발 부탁드립니다 ㅜㅜㅜ
void main()인것부터가 좆병ㅇ신으로 공부하고 있네
main에서 z를 5대입, 그다음 f(z, &z);호출하면 *y =3이니까 z의 값은 전부다 3이될거임 근데 x는 함수파라미터니까 값만 복사해서 5인상태로남아있을거임(5,3,3). 그 다음 z += *y인데, z는 역시 전역변수이고, *y는 z의 값이니까 z는 결국 6이됨. 마찬가지로 *y값도 6. (5, 6,6)해결
(5,6,6)에서 x=2대입하니까 2인상태로 있을거고 z += x니까 (z= z+x와 동치) z는 결국 8이됨. 그런데 f(z, &z)로 int* y에 z의 주소를 전달했으니 *y를 취해보면 결국 z와 똑같은 값 8이나옴. 따라서 (2, 8,8) 해결
이런조잡한 문제 푸는거 아무의미없다. 딱보니 책 예제같은데 void main()쓰는것부터 개병ㅇ신쓰레기책이라는 증거임 ^^
나 ㅈㄴ 허접이라 그런데 저 과정좀 더 자세히 설명해조
ㅅㅂ 정석적으로 int main넣으면 얼마나 귀차는데 return도 써줘야하자나 ㅜㅜ
ㄴ귀찮으면 C언어를 하면 안 됨
void main ㅋㅋㅋㅋㅋㅋㅋ - dc App