初心者で申し訳ないのですが、分からないところがあるので教えて下さい

#include <stdio.h>

struct data{ int a[25]; }d;

int main(void)
{
struct data *ptr;
int i;
ptr=&d.a[0]; //ptr にa[0]のアドレスを格納

for(i=0;i<=25;i++)
{
scanf("%d",ptr);
ptr++;
}
for(i=25;i>=0;i--)
{
printf("%d \n",ptr->a[i]);
}

return 0;
}

上記のソースをコンパイルしようとすると一応コンパイルできるのですが、警告がでます。
出来上がった実行ファイルを実行すると途中でエラーが出てしまいます (;´Д`)
自分ではどこがおかしいのか分かりません。というか、構造体やポインターがイマイチよく分かってません;;
お手数かとは思いますが、エラーがでる原因や誤り等を教えて下さい。よろしくお願いします。
OS: WindowsXP HomeEdition , コンパイラー: bcc32