func1(int *a) { func2(&a); } func2(int *a) { *a++; } main() { int x = 0; func1(&x); }こうするとエラーになります。
func2(&*a);
とするとエラーは出なくなり、きちんと動作するようになりましたが、この書き方はどうなんでしょうか?
解説サイトとかを見てもあまりこういうことは書いておらず、あまり良くない書き方をしているのかと気になってしまい、投稿しました。
よろしくおねがいします。
func1(int *a) { func2(a); // aはxのアドレス値であるので&も*も不要 } func2(int *a) { *a = 1; } main() { int x = 0; func1(&x); }&*aは、aの指すアドレスの変数(つまりx)のアドレスって意味なので間違ってはいませんけど、そんな面倒なことはしないでしょうね。
void func1(int *a) { func2(&a); } void func2(int **a) { *a=(int *)1; }だから、何がしたいのかが、重要です。
main() { int x = 0; int *px = &x func1(px); }これでも同じことになると思うんですが、プログラムかく上でどちらが好まれるんでしょうか?