ポインタp
をint *p
;として宣言した場合。メインモジュールでは、すでに宣言されている別の整数変数がどこにあるかp
を割り当てることで、に含まれるアドレスを変更できます。次のような関数を使用してアドレスを変更したいと思います。p = &a;
a
void change_adrs(int*q)
{
int *newad;
q = newad;
}
この関数をメインモジュールから呼び出すと
int main()
{
int *p;
int a = 0;
p = &a; // this changes the address contained by pointer p
printf("The address is %u\n", p);
change_adrs(p);
printf("The address is %u\n", p); // but this doesn't change the address
return 0;
}
アドレスの内容は変更されていません。同じタスクに関数を使用することの何が問題になっていますか?