程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c語言-C語言函數的形參(結構體類型)和實參類型(指針)可以不同嗎?

c語言-C語言函數的形參(結構體類型)和實參類型(指針)可以不同嗎?

編輯:編程綜合問答
C語言函數的形參(結構體類型)和實參類型(指針)可以不同嗎?

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,而無需額外的轉換,但是相反就不行。
隱式轉換方便了開發者編碼,但是它的限制同樣為了防止你無心犯錯。

好比你用大碗盛小碗的食物,編譯器不用讓你確認,自己就做了。但是你用小碗裝大碗的食物,那麼編譯器提醒你,如果大碗的東西太多,可能會出錯。那麼你需要寫清楚,表示你知道這麼回事,它才接受。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved