2014-07-18 5 views
1

다음 프로그램의 출력이 이 될 것으로 예상했지만 컴파일러는 을 표시합니다. 누군가 이유를 설명해 주시겠습니까?포인터가 예상보다 다른 값을 표시합니다.

#include <stdio.h> 
int a=5; 
change1(int *p); 

int main(void) 
{ 
    int x=20,*ptr=&x; 
    change1(ptr); 
    printf("%d ",*ptr); 
    return 0; 
} 
change1(int *p) 
{ 
    p=&a; 
} 
+0

참조 [이 답변] (HTTP : //programmers.stackexchange .com/questions/246148/use-of-double-pointer-and-n-pointer/246300 # 246300). –

답변

3

, 당신은 포인터에 대한 포인터를 전달해야 다음

change1(&ptr); 

과 :

void change1(int **p) 
{ 
    *p = &a; 
} 
5

포인터를 전달하면 함수가 사본을 만듭니다. 이를 변경하기 위해서는 포인터에 포인터를 전달해야합니다. 당신이 포인터를 수정하려면

관련 문제