[問題] 陣列傳到副程式,為何sizeof結果不一樣?
遇到的問題: (題意請描述清楚)
為何主程式與副程式傳遞陣列時,其sizeof結果不一致?
希望得到的正確結果:
n=30,m=10
n=30,m=10
程式跑出來的錯誤結果:
n=30,m=10
n=4,m=10
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
Dev-C++
有問題的code: (請善用置底文標色功能)
#include <stdio.h>
#include <stdlib.h>
void copy(char c[][10],char d[][10]);
int main(void)
{
int i,j;
char a[3][10]={"3333abc","de33f","3333ghgh"};
char b[3][10];
int n=sizeof(a),m=sizeof(a[0]);
printf("n=%d,m=%d\n",n,m);
copy(a,b);
system("pause");
return 0;
}
void copy(char c[3][10],char d[3][10])
{
int i,j=0;
int n=sizeof(c),m=sizeof(c[0]);
printf("n=%d,m=%d\n",n,m);
}
補充說明:
是小弟有思考錯的地方嗎? 謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.204.29
→
12/28 00:45, , 1F
12/28 00:45, 1F
推
12/28 00:50, , 2F
12/28 00:50, 2F
→
12/28 00:50, , 3F
12/28 00:50, 3F
→
12/28 00:52, , 4F
12/28 00:52, 4F
→
12/28 01:07, , 5F
12/28 01:07, 5F
→
12/28 01:20, , 6F
12/28 01:20, 6F
推
12/28 01:40, , 7F
12/28 01:40, 7F
→
12/28 01:41, , 8F
12/28 01:41, 8F
→
12/28 01:42, , 9F
12/28 01:42, 9F
→
12/28 01:42, , 10F
12/28 01:42, 10F
推
12/28 01:57, , 11F
12/28 01:57, 11F
→
12/28 02:45, , 12F
12/28 02:45, 12F
→
12/28 02:45, , 13F
12/28 02:45, 13F
※ 編輯: althon 來自: 61.229.192.122 (12/28 10:03)
→
12/28 10:03, , 14F
12/28 10:03, 14F
→
12/28 10:04, , 15F
12/28 10:04, 15F
推
12/28 10:08, , 16F
12/28 10:08, 16F
→
12/28 10:09, , 17F
12/28 10:09, 17F
→
12/28 10:09, , 18F
12/28 10:09, 18F
→
12/28 10:09, , 19F
12/28 10:09, 19F
→
12/28 10:14, , 20F
12/28 10:14, 20F