配列
適当な記述ですが、次を見てください。
void roll(int *c)
{
int n, b2[8];
if(t<3)
{
for(n=0; n<8; n++)
b2[n]=c[n];
for(n=0; n<8; n++)
c[b2[n]]=7-n;
for(n=0; n<8; n++)
printf("%d",c[n]);
printf("\n");
t++;
roll(c);
}
else t=0;
}
int main()
{
int b[]={3,6,4,0,7,2,5,1};
roll(b);
for(n=0; n<8; n++)
printf("%d",b[n]); //36407251が表示されるようにしたい。
return(0);
}
rollが何の関数かは省略しますが、rollにmainのb(ポインタ?)を渡し、ある処理をして,それでmainに戻ってきた時にb[]を表示すると、36407251が表示されません。
ポインタを引数にするってことはポインタでさしてるとこをrollで操作してるわけですよね?
そうすれば変わって当然だとはおもいます。
でも関数1で関数2に配列1を渡し、その関数2の中でで配列1の値が変化しても、元の関数1にもどれば配列1のまま変化していないようにするにはどうすればいいですか?
やはり もう1つ配列を用意しなきゃだめなのでしょうか。