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);
}
これでも同じことになると思うんですが、プログラムかく上でどちらが好まれるんでしょうか?