for(i = 0; i < num; i++){
if (parts[i].code == id) {
printf("%03d %-20s %-20s %-20s %5d\n",
parts[i].code,
parts[i].name,
parts[i].type,
parts[i].maker,
parts[i].price
);
break;
}
}
if (i == num) {
printf("ID %3d の商品はありません。\n", id);
}
}

return 0;
}


課題の回答にて少しわからないのでお願いします
最初のwhile文でscanfをつかって構造体を利用するところで
&がついてるところとそうでないところがあるのはなぜなのでしょうか?