#include<stdio.h>
int main()
{
int *previous, *current ;
int a[5] = {1,2,3,4,5};
current =(int *) a ;
previous = current ;
current = *( (int**) current ) ; //my question is on this line
printf ("\nprevious is 0x%x and current is 0x%x \n ", previous , current ) ;
printf ("\nprev+1 0x%x , prev+4 0x%x \n", previous+1 , previous+4 ) ;
return 0;
}
出力は次のとおりです。
bash-3.00$ ./a.out
previous is 0xffffd0f8 and current is 0x1
prev+1 0xffffd0fc , prev+4 0xffffd108
私の質問は次のとおりです。「現在」は、参照されて再び逆参照される前に、以前は配列の先頭を指していました。次のステートメントは、「現在」の値をどのように変更しますか?
current = *( (int**) current ) ;
また、*previous を出力すると 1 が出力され、*current はコア ダンプします。この動作の理由は何ですか?