[問題] struct陣列在main和函數裡的size不同
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 )
( 未必需要依照此格式,文章條理清楚即可 )
遇到的問題: (題意請描述清楚)
用strutc宣告一個陣列 有名字和分數
用一個函數找出這個陣列中分數最高的
return值為struct型態
希望得到的正確結果:
9999
程式跑出來的錯誤結果:
99
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
wxDEV-C++
有問題的code: (請善用置底文標色功能)
struct data
{
char name[10];
int math;
};
struct data best(struct data student[]);
int main()
{
int MAX=5;
struct data student[5]={{"A",99},{"B",59},{"c",11},{"D",9999},{"E",78}};
printf("In main, sizeof(student) = %d\n", sizeof(student));
printf("Max score = %d\n",best(student).math);
system("pause");
return 0;
}
struct data best(struct data student[])
{
int i=0;
int j=0;
int max=(student+0)->math;
printf("In best, sizeof(student) = %d\n", sizeof(student));
printf("In best, sizeof(student[0]) = %d\n", sizeof(student[0]));
for(i=1; i<(sizeof(student)/sizeof(student[0])); i++)
{
printf("i = %d\n",i);
if((student+i)->math>max)
{
max=(student+i)->math;
j=i;
}
}
return *(student+j);
}
跑出結果:
In main, sizeof(student) = 80
In best, sizeof(student) = 4 // 這行的結果我不知道為什麼會這樣...
In best, sizeof(student[0]) = 16
Max score = 99
所以在best函數裡 for 迴圈沒有執行到
Max的output就是student[0]的math值
--
◢ˋ〃ˊ◣ ╔═╦══╦════╗
右 ▂ ◥@︵@◤ 左 ║阿║宅度║0 ║
手 ∵)3∵ ◢█◣ 手 ║阿╠══╬════╣
星 ▊star▎◤.█.█◣ █ █ 多 ║宅║魅力║10000000║
巴 fuck ███ ◥█◤ 拿 ╚═╩══╩════╝
克 ▎▊ ███ 特 by lordwill
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.243.53.253
推
07/11 16:40, , 1F
07/11 16:40, 1F
→
07/11 16:41, , 2F
07/11 16:41, 2F
→
07/11 16:41, , 3F
07/11 16:41, 3F
→
07/11 16:41, , 4F
07/11 16:41, 4F
推
07/11 16:44, , 5F
07/11 16:44, 5F
→
07/11 16:44, , 6F
07/11 16:44, 6F
→
07/11 16:46, , 7F
07/11 16:46, 7F