こんにちは、Cプログラミング言語の初心者です。最近、値による呼び出しとアドレスによる呼び出しについて読みました。呼び出された関数のアドレス変更による呼び出しでは、呼び出し先が反映されることを学びました。ただし、次のコードはそのようには機能しません。
int x = 10,y = 20;
void change_by_add(int *ptr) {
ptr = &y;
printf("\n Inside change_by_add\t %d",*ptr);
// here *ptr is printing 20
}
void main(){
int *p;
p = &x;
change_by_add(p);
printf("\nInside main\t %d", *p);
// here *p is still pointing to address of x and printing 10
}
アドレスを渡すときに、呼び出された関数によって行われた変更が呼び出し元を反映しないのはなぜですか?