#include<stdio.h>
void f(int *p,int *q){
p=q;
*p=2;
}
int main(){
int i=0,j=1;
f(&i,&j);
printf("%d%d\n",i,j);
return 0;
}
이 프로그램의 출력은 02입니다. 누군가 이것을 설명 할 수 있습니까?
주석보기 :
#include <stdio.h>
void f(int *p, int *q) // p contains address of i, q contains address of j
{
p=q; // p now contains address of j
*p=2; // assigns 2 to j, not i
}
int main()
{
int i=0,j=1; // i contains 0, j contains 1
f( &i, &j ); // call f with pointers to i and j
printf( "%d%d\n", i, j ); // after call to f, i is unchanged, j contains 2
return 0;
}
21이나 22가 아닌 02가 출력됩니다. 참조하는 답안지가 올바르지 않습니다.
편집하다
C 프로그래밍을 가르치는 많은 사람들이 언어를 잘 모르는 것은 삶의 슬픈 사실입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다