int numstus;
int lens;
student pointer;
void main()
{
int i=1;
char str[2];
lens=100;
pointer=(student *)malloc(lens*LEN); /分配內存*/
numstus=0;
welcome(); /*歡迎界面*/
while(i>0)
{
i=menu_select(); /*控制菜單*/
switch(i)
{
case 1:addrecord(pointer);break; /*增加學生信息*/
。。。省略
而當調用addrecord函數的定義是
void addrecord(student stud[]) {...}
pointer是個結構體指針
addrecord參數是 結構體類型
程序無錯,傳遞可行
真是怎麼回事
代碼不全。
是這樣的,和參數無關,C語言存在類型的隱式轉換,比如說一個short可以被當作一個int,而無需額外的轉換,但是相反就不行。
隱式轉換方便了開發者編碼,但是它的限制同樣為了防止你無心犯錯。
好比你用大碗盛小碗的食物,編譯器不用讓你確認,自己就做了。但是你用小碗裝大碗的食物,那麼編譯器提醒你,如果大碗的東西太多,可能會出錯。那麼你需要寫清楚,表示你知道這麼回事,它才接受。