回覆列表
-
1 # 使用者2440476009336
-
2 # 使用者6484034300502
int f(int x); 這行程式碼是函式宣告,意思是聲明瞭一個函式,函式名字叫做f,返回值的型別是int整型,形參型別是int整型。參考下面的函式宣告格式: 返回值型別 函式名(形引數據型別 形參名) 例如 int f(int x) { return x*2 } 函式定義裡面是返回x的兩倍。 f(1)=1*2=2。 那麼f(f(1))=f(2)=2*2=4。 f(f(f(1)))=f(f(2))=f(4)=2*4=8。
這個程式語法,有些問題,而且,邏輯,邏輯上好像也有錯誤(個人見解)。首先,是函式定義,c語言中函式定義的時候,需說明形參的型別。你的程式,兩個指標的型別都沒有說明,對應位置應該改為:intf(intx,int*py,int**ppz)。其次,在邏輯上,你的三個形參都是操作的同一個地址空間(記憶體單元)中的內容,也就是你把同一個地址給了三個形參。這貌似會問題。我加了main函式運行了你的程式……會崩潰,根本不會出現你想要的的結果!也許你會懷疑我的main函式有問題,我把我的內碼表給你,你可以自己試試!#include<stdio.h>intf(intx,int*y,int**z){**z+=1;*y+=2;x+=3;returnx+*y+*(*z);}intmain(){intc=4;int**a=c;int*b=c;intd;d=f(c,*b,**a);printf("%d",d);return0;}